美文网首页设计模式之道设计技术干货
我学设计模式:简单工厂模式

我学设计模式:简单工厂模式

作者: hoxis | 来源:发表于2015-12-31 13:17 被阅读119次

设计模式的分类

  • 创建型:将对象实例化的过程抽象,用于创建对象实例
  • 结构型:描述如何组合类和对象,从而可以获取更大的结构
  • 行为型:描述算法和对象间职责的分配

提供一个创建对象实例的功能,而无需关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。

认识简单工厂

示例:

  • 一个简单接口:
package com.liuhao.designpattern.factory;

public interface Api {

    public void operation(String s);
}
  • 接口的两个实现类:
package com.liuhao.designpattern.factory;

public class ImplA implements Api {

    @Override
    public void operation(String s) {
        System.out.println("ImplA s=" + s);
    }

}
package com.liuhao.designpattern.factory;

public class ImplB implements Api {

    @Override
    public void operation(String s) {
        System.out.println("ImplB s=" + s);
    }

}
  • 工厂:
package com.liuhao.designpattern.factory;

public class Factory {

    /**
     * 具体创建Api对象的方法
     * 
     * @param condition 外部传入的选择条件
     * @return 创建好的Api对象
     */
    public static Api createApi(int condition) {
        Api api = null;

        if (condition == 1) {
            api = new ImplA();
        } else if (condition == 2) {
            api = new ImplB();
        }

        return api;
    }

}
  • 客户端调用
package com.liuhao.designpattern.factory;

public class Client {
    public static void main(String[] args) {
        Api api = Factory.createApi(1);
        api.operation("正在使用简单工厂");
    }
}
  1. 简单工厂的功能
    通常用来创造接口,但也可以用来创造抽象类或普通类的实例。

2.静态工厂
简单工厂的方法通常是静态的,也被称为静态工厂。

3.万能工厂
一个简单工厂可以创建不同的接口、抽象了或者是实例。

简单工厂的创建范围通常不要太大,建议控制在一个独立的组件级别或者模块级别。

简单工厂的调用顺序

简单工厂的调用顺序简单工厂的调用顺序

简单工厂的命名建议

  • 类名:模块名称+Factory,如用户模块的工厂就称为UserFactory
  • 方法名:get+接口名称或者create+接口名称,比如getUser

简单工厂中方法的写法

主要实现的功能是选择合适的实现类来创建实例对象。选择条件或者参数主要有:

  • 源自客户端,有Client传入参数
  • 源于配置文件,从中获取用于判断的值
  • 源于运行期间的某个值

可配置的简单工厂

如上述的工厂代码实例,创建对象时根据传入的参数值来判断创建的实现类,这种情况下每次新增一个实现类都要来修改该工厂类,这种做法明显不太好。

解决的方法可以使用配置文件,当有新的实现类时,只需在配置文件中配置即可。然后使用反射的方式来实现类。

思考简单工厂

本质:选择实现

简单工厂的重点在于选择,实现是已经做好了的,目的在于为客户端选择相应的实现,从而使得客户端和具体实现之间解耦。

何时选用简单工厂

  • 想完全封装隔离具体实现,让外部只能通过接口来操作封装体
  • 想对创建对象的职责集中管理和控制

相关模式

  • 简单工厂 和 抽象工厂模式
    简单工厂是用来选择实现的,可以选择任意接口的实现。

抽象工厂是用来选择产品簇的实现的,也就是说抽象工厂里有多个用于选择并创建对象的方法,并且这些对象之间是有关系的,它们通常是构成一个产品簇所需要的部件对象。

  • 简单工厂 和 工厂方法模式
    工厂方法的本质也是用来选择实现的,区别在于它是把选择具体实现的功能延迟到子类实现

如果觉得有用,欢迎关注我的微信,有问题可以直接交流:

你的关注是对我最大的鼓励!你的关注是对我最大的鼓励!

相关文章

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • 设计模式一、单例模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 简单单例(推荐...

  • 设计模式四、抽象工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 抽象工厂模式 ...

  • 设计模式三、工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 工厂模式 在一...

  • 设计模式

    设计模式(视频总结) [TOC] 一、简单工厂模式(Simple Factory) 简单工厂模式: 简单工厂模式属...

  • iOS设计模式-工厂模式

    工厂模式分为简单工厂模式,工厂模式、抽象工厂模式三类。 简单工厂模式 1. 定义 简单工厂模式并不是常用的设计模式...

  • Android设计模式:工厂设计模式

    目录 简单工厂模式工厂方法模式抽象工厂模式 简单工厂模式 简单工厂模式是所有工厂模式的基础,不属于23种设计模式范...

  • 相近设计模式比较

    设计模式干货: 简单工厂模式 vs. 工厂模式 vs. 抽象工厂模式简单工厂和工厂模式区别? 简单工厂没有多个子类...

  • 三、创建型模型

    简单工厂模式 工厂方法模式 抽象工厂模式 单例模式 1.简单工厂模式 简单工厂模式并不属于23种设计模式。 不难看...

  • 简单工厂模式

    Android进阶之设计模式 简单工厂模式 简单工厂模式(又叫作静态工厂方法模式), 其属于创建型设计模式,但并不...

网友评论

本文标题:我学设计模式:简单工厂模式

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