思想与模式.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
思想与模式.ppt

几周前我们这样写代码 现在的我们可能这样写代码 写成单独的方法 package com.study; //运算类 public class Count { private double result; public Count(){} //运算方法 public double calculate(double numberA,double numberB,String operator){ if(operator.equals(+)) result = numberA + numberB; if(operator.equals(-)) result = numberA - numberB; if(operator.equals(*)) result = numberA * numberB; if(operator.equals(/)) result = numberA / numberB; return result; } } 想专业,这样写 简单工厂模式的优缺点 优缺点   优点   工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个软件体系结构的优化。   缺点   由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。   当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求.这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利;   这些缺点在工厂方法模式中得到了一定的克服。   使用场景   工厂类负责创建的对象比较少;   客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;   由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。 运用一下简单的工厂模式 package com.study; //简单工厂模式 public class OperationFactory { public static Operation createOperation(String operate){ if(operate.equals(+)){ return new OperationAdd(); } if(operate.equals(-)){ return new OperationSub(); } if(operate.equals(*)){ return new OperationMul(); } if(operate.equals(/)){ return new OperationDiv(); } return null; } } 写个Demo测测 package com.study; public class Demo { public static void main(String[] args) { Operation oper; oper=OperationFactory.createOperation(/); oper.setNumberA(3); oper.setNumberB(2); System.out.println(oper.getResult()); } } * package com.study; import java.util.Scanner; //计算器 public class calculator { public static void main(String[] args) { System.out.println(请输入一个数:); Scanner sc = new Scanner(System.in); int A = sc.nextInt(); System.out.println(请数另一个数:); int B = sc.nextInt(); System.out.println(选择运算符:+,-,*,/); String str = sc.next(); if(str.equals(+)){ System.out.println(A+B); } i

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档