Java设计模式——简单工厂模式

  • Post author:
  • Post category:java


介绍

简单工厂模式就是定义一个工厂接口,将实际工作对象推迟到子类工厂对象中,如果功能不多一个工厂类就可以实现就叫简单工厂模式。被创建的实例有同一个父类。在简单工厂模式中创建实例的方法一般为静态方法,所以简单工厂模式也叫静态方法模式。

简单工厂模式有一个具体的工厂类,可以有多个子类属于创建型设计模式。简单工厂模式不属于GoF 23中设计模式。

优点

  1. 工厂和产品分工明确,实现了创建和使用分离;
  2. 使用时不需要知道具体产品类名,只需要知道产品类型。

缺点

  1. 简单工厂模式工厂类型单一,负责所有工厂类的创建,职责过重,且工厂代码过于臃肿,违背高聚合原则。
  2. 系统拓展性不好,增加产品就要增加产品类,修改工厂逻辑。
  3. 简单工厂使用了static工厂方法,造成工厂角色不能形成基于继承的等级结构。

使用场景

对于产品相对较少的情况;

实现

简单工厂模式是由一个抽象产品类、多个具体产品类、创建具体产品类的工厂类构成。

/**
 * 抽象产品类
 */
public interface Product {

    void info();
}


/**
 * 具体产品类 1
 */
public class AirplaneProduct implements Product {

    @Override
    public void info() {
        //处理逻辑
        Log.e("test","制造飞机");
    }
}


/**
 * 具体产品类 2
 */
public class CannonProduct implements Product {

    @Override
    public void info() {
        //处理逻辑
        Log.e("test","制造大炮");
    }
}

/**
 * 简单工厂类
 */
public class SimpleFactory {
    public static final int TYPE_AIRPLANNE = 0;
    public static final int TYPE_CANNON = 1;

    public static Product factoryMake(int type) {
        switch (type) {
            case TYPE_AIRPLANNE:
                new AirplaneProduct();
                break;
            case TYPE_CANNON:
                new CannonProduct();
                break;

        }
        return new CannonProduct();
    }
}

学习记录。



版权声明:本文为lhqq_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。