设计模式 - 简单工厂模式Simple Factory

核心 :  简单工厂处理选择“具体哪一个实现类”的工作

本质是: 选择实现

原因: OOP里重要的思想是“面向接口编程” 接口的作用是“封装隔离”,接口定义功能,是一种协议。我们使用时一般写法是  Interface face = new Impl(); 注意,Impl是实现类,那如果有多个Impl,客户端如何知道用哪一个,那就需要客户端必须对每个实现类有一定的认识,所以这种方式并没有完全“隔离”。 简单工厂的目的就是,提供静态方法,直接生产一个Interface的实例对象,不用关心使用什么对象,如何实现对象等等,做到完全隔离。  

说明:简单工厂也可以理解为一个工具类,因为它提供静态方法获取对象,所以理论上讲它里面可以提供各种各样的对象,但是为了逻辑清晰,维护方便,我们一般按模块或者系统来使用,命名规则一般是   模块+Factory,比如用户模块  UserFactory    工厂内的方法命名一般是  get或create+接口名 , 不要使用new 因为不一定我们的对象每次都是new的 ,比如我们跟单例模式使用,就仅有一个对象。多个模块就定义多个工厂。

生成对象的方法一般为

public static Interface createUser(int type){

Interface inter = null;

if(type==1){

inter = User1();

}else if(type==2){

inter = User()2;

}

选择条件的来源有3种

1. 外部 (缺点是要对外讲明不同type作用,似乎是没有完全隔离)

2. 配置文件 (灵活了很多,有个问题在配置文件里新增实现类,工厂里的逻辑代码需要改动,使用反射可以解决该问题)

3.运行时根据内存中某个值来决定

还有一点需要提示: 简单工厂因为提供静态方法所以也叫静态工厂,万能工厂模式。一般不需要实例化factory,所以为了防止客户端实例化,可以使得工厂的构造函数私有化。

简单模式一般和单利模式结合使用场景比较多,完结。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容