美文网首页技术文
设计模式 - 简单工厂模式Simple Factory

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

作者: 热血沸腾 | 来源:发表于2016-09-21 13:49 被阅读54次

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

    本质是: 选择实现

    原因: 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,所以为了防止客户端实例化,可以使得工厂的构造函数私有化。

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

    相关文章

      网友评论

        本文标题:设计模式 - 简单工厂模式Simple Factory

        本文链接:https://www.haomeiwen.com/subject/qlraettx.html