[论] 工厂模式,欢迎高手、专家、前辈们一起来谈谈自己的想法。供小弟们学习,谢谢! 本帖最后由 cyshen 于 2010-05-14 14:26:41 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我有限理解是 对于客户而言,他们的身份决定了他们只关心产品本身而不是建造过程,因此屏蔽建造细节,只暴露产品接口给客户,将耦合降至最低是很有必要的。由此产生的效果就是客户只面向接口而非实现,产品建造的任何改动或升级已与客户无关,使其使用方便,易于维护。使用到的设计原则可能是:Program to an interface, not an implementationps:这里的接口是普遍意义上的抽象概念接口,而非特指java中的接口 补充还有使用工厂方法比直接new的另外两优点:1.可控性更好建造过程在你控制范围内2.可读性更好getter之类的对客户而言更友好些 如果你的ImplementationaTwo ()创建实例所需要的大量初始化工作,使用工厂就可以将初始化工作从其构造函数中分离出去。还有就是如果你要再有类似的ImplementationaTwo ()这种对象的话,方便统一管理什么的。可以看下DAOFactory这种例子,优点就更明显了,你这例子看不太出来。。 通过静态工厂方法创建对象实例(自己),这样会给我们带来什么样的好处?它比直接Service imp=new ImplementationaTwo () 创建对象的实例有哈好处?工厂模式,它的真正用途是什么?=========简单点来说就是为了将对象的创建和使用相分离,以实现开闭原则(对扩展开放,对修改关闭)。因为对象的创建方式是否改变无法由程序定性控制,而对于对象的使用我们却可以固定下来。因此,对于开闭原则中的“开放”是指对对象创建方式的扩展留有余地,而其中的“关闭”则是指固定的部分(对象的使用)这一个方面能够成为常态!而new操作必须涉及到一个具体的对象,当超类(抽象类或接口)的实例对象有所改变时,必然影响到使用子类的地方。这样便增加了程序的耦合!而使用工厂模式则把对象创建方式专门提取出来以应付变化! 写了个swing的界面 但是无法运行。请前辈看下 指点下 java矩阵问题 一个lastIndexOf的用法题, 请高手解决 谁有java深度历险书的电子版,发给我一份!!! return 问题 java的控制台输入 网络五子棋 一个关于JRE1.2.2和JRE1.4的汉字显示问题,请大虾赐教! JavaMail 1.2怎么配置环境变量??在线求答,谢谢!! 请问我想编一个frame程序,怎么把后面讨厌的控制台去掉 新手学Java 帮我看看这个代码 按回车键,触发焦点上的事件。
ps:这里的接口是普遍意义上的抽象概念接口,而非特指java中的接口
建造过程在你控制范围内2.可读性更好
getter之类的对客户而言更友好些
还有就是如果你要再有类似的ImplementationaTwo ()这种对象的话,方便统一管理什么的。可以看下DAOFactory这种例子,优点就更明显了,你这例子看不太出来。。
Service imp=new ImplementationaTwo () 创建对象的实例有哈好处?
工厂模式,它的真正用途是什么?
=========
简单点来说就是为了将对象的创建和使用相分离,以实现开闭原则(对扩展开放,对修改关闭)。
因为对象的创建方式是否改变无法由程序定性控制,而对于对象的使用我们却可以固定下来。
因此,对于开闭原则中的“开放”是指对对象创建方式的扩展留有余地,而其中的“关闭”则是指固定的部分(对象的使用)这一个方面能够成为常态!而new操作必须涉及到一个具体的对象,当超类(抽象类或接口)的实例对象有所改变时,必然影响到使用子类的地方。这样便增加了程序的耦合!而使用工厂模式则把对象创建方式专门提取出来以应付变化!