[论] 工厂模式,欢迎高手、专家、前辈们一起来谈谈自己的想法。供小弟们学习,谢谢! 本帖最后由 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操作必须涉及到一个具体的对象,当超类(抽象类或接口)的实例对象有所改变时,必然影响到使用子类的地方。这样便增加了程序的耦合!而使用工厂模式则把对象创建方式专门提取出来以应付变化! 连接MySQL时Unknown column问题,求高手解答 用javamail连接163邮箱时,要我装证书 请推荐一本Java图像处理的的书 有没有用java实现的命令行系统 javaEE新手不要用jdk1.6,建议用1.5或1.4 接口,类,以及构造函数的问题,好复杂! java 可以调用 c# 生成的 .dll文件吗 象csdn这样的免费网站是怎么生存的???? 谁来给我讲解一下线程的概念,我有点不理解,要用你们自己的语言和经验 如何得到从java发到vb.net的中文字符串? 新手学Java 帮我看看这个代码 按回车键,触发焦点上的事件。
ps:这里的接口是普遍意义上的抽象概念接口,而非特指java中的接口
建造过程在你控制范围内2.可读性更好
getter之类的对客户而言更友好些
还有就是如果你要再有类似的ImplementationaTwo ()这种对象的话,方便统一管理什么的。可以看下DAOFactory这种例子,优点就更明显了,你这例子看不太出来。。
Service imp=new ImplementationaTwo () 创建对象的实例有哈好处?
工厂模式,它的真正用途是什么?
=========
简单点来说就是为了将对象的创建和使用相分离,以实现开闭原则(对扩展开放,对修改关闭)。
因为对象的创建方式是否改变无法由程序定性控制,而对于对象的使用我们却可以固定下来。
因此,对于开闭原则中的“开放”是指对对象创建方式的扩展留有余地,而其中的“关闭”则是指固定的部分(对象的使用)这一个方面能够成为常态!而new操作必须涉及到一个具体的对象,当超类(抽象类或接口)的实例对象有所改变时,必然影响到使用子类的地方。这样便增加了程序的耦合!而使用工厂模式则把对象创建方式专门提取出来以应付变化!