简单工厂模式
来源:互联网 发布:苹果系统炒股软件 编辑:程序博客网 时间:2024/05/16 09:26
一、简单工厂模式说明:
外部调用与内部封装实现隔离的一种手段。简单工厂的本质是“选择实现类”。简单工厂的位置也属于在封装体内部,所以工厂是知道具体实现类的。简单工厂的目的就在于为外部调用来选择相应的实现类,从而使外部调用和内部实现进行解耦。
二、简单工厂示例:
/** * @Title: BeanFactory.java * @Package: com.gyb.simpleFactory * @Desc: 工厂类 * @Copyright: AsiaInfo-Linkage * @author: gaoyb * @date: Mar 4, 2012 6:05:15 PM * @Email: gaoyb3@asiainfo-linkage.com */public class BeanFactory {/** * 具体的创造Bean的方法,一般根据配置文件来配置beanId 和bean实现类 * 然后通过传beanId读取配置文件的具体实现类对象 * * @return 创造好的Bean对象 */public static Api createBean(String beanId){//return 根据beanId读取配置文件的具体实现类对象;}}//外部调用public static void main(String args[]){Api bean = BeanFactory.createBean(beanId);}
接口Api的代码和具体实现类的代码这里未做展示。
三、简单工厂优缺点:
优点:
简单工厂虽然很简单,但是运用了多态、面向接口编程机制。实现了客户端和具体接口实现的解耦(客户端不知道具体由谁来实现,也不知道具体如何实现的,客户端只知道通过工厂获取它需要的接口对象)
缺点:
通过客户端传参数来选择实现类,客户端就需要知道这个参数代表的功能和含义,这在一定程度上增加了客户端的复杂度。
一般简单工厂都是静态工厂,即创建实现类对象的方法是静态的,且工厂类的构造函数私有化了。这样就不能扩展子类了。当然一般也不需要扩展子类。
四、思考简单工厂:
本质:选择实现对象。
使用场景:如果要想封装隔离具体实现,那么可以选择简单工厂,让客户端通过工厂来选择相应的接口对象,而不去关心具体的接口实现。
对于一些对象的集中创建管理也可以使用简单工厂。
五、其他相关模式:
1.简单工厂模式和抽象工厂模式:
简单工厂是用于选择实现对象的,一个简单工厂可以有多个选择与创建对象的方法,这些方法之间是可以有关系也可以没关系的。
抽象工厂是用于选择产品簇对象的,也有多个选择与创建对象的方法,这些方法之间是有关系的。这些创建的对象通常是某一类产品簇的部件对象。
所以说这两种模式也很类似。如果抽象工厂只有一个实现,不分层次,就相当于是简单工厂。
2.简单工厂模式和工厂方法模式:
工厂方法的也是用来选择实现的,与简单工厂的区别在于工厂方法的选择实现对象是放在子类中去实现的。如果放到父类中去实现就等同于简单工厂。
3.其他创建对象型模式:
单例模式、原型模式、生成器模式等
六、实践:
一般与抽象工厂和工厂方法模式组合使用创建实现类实例。比如在MVC框架应用中,view层、bmo层、dao层之间实例的调用,一般我们就采用工厂组合模式加配置文件的方式来创建实例。
- 工厂模式-简单工厂
- 工厂模式-简单工厂
- 工厂模式-简单工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 简单工厂和工厂模式
- 简单工厂和工厂模式
- 1,工厂模式--简单工厂
- 简单工厂和工厂模式
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂模式和抽象工厂
- 对textview进行监听,统计edittext的字数
- setsockopt 解析
- JS 关于浏览器之间 scrollHeight offsetHeight (比如 iframe自适应高度时...)
- "五除以四" 和 “五除以负四”
- 给ping 加上时间标签,检测网络状态
- 简单工厂模式
- 函数返回值问题
- .bat命令
- 查看并下载LINUX下命令源代码
- 为什么链表初始化时,要用双重指针?
- 程序分析
- Java 代码调用ANT
- 比较Perl、PHP、Python、Java和Ruby --转自乱炖--http://levi.cg.am/?p=711
- 用WinInet开发Internet客户端应用指南