设计模式:简单工厂模式

1,690 阅读2分钟

简单工厂模式

定义

工厂模式可以分为:简单工厂模式、工厂方法模式和抽象工厂模式 我们将被创建的对象称为产品,创建产品的对象称为工厂 如果创建的产品不多,只需要一个工厂就可以,就是简单工厂模式

优缺点

  • 优点:
    • 工厂类包含必要的逻辑判断,可以决定在什么时候创建哪一个产品的实例。客户端可以免除直接创建产品对象的职责,很方便的创建出相应的产品。工厂和产品的职责区分明确。
    • 客户端无需知道所创建具体产品的类名,只需知道参数即可。
    • 也可以引入配置文件,在不修改客户端代码的情况下更换和添加新的具体产品类。
  • 缺点:
    • 工厂类单一,负责所有产品的创建,职责过重,违背高内聚原则
    • 扩展难,一旦增加了新的产品需求,就要修改工厂的逻辑
    • 简单工厂模式使用static工厂方法,因此不能继承

应用场景

产品品种较少的情况,客户端只需要传入工厂类需要的参数,不用关心如何创建

模式的结构和实现

结构

+ 简单工厂:是该模式的核心,负责创建所有实例的逻辑,可以被外界直接调用,创建产品
+ 抽象产品:是所有产品的父类,负责描述所有实例的公共接口
+ 具体产品:

image.png

具体实现

example

    /**
     * 抽象产品
     */
    public  interface  Product{
        void show();
    }
    /**
     * 具体产品1
     */
    static  class ConcreteProduct1 implements Product{
        @Override
        public void show(){
            System.out.println("具体产品1的show方法");
        }
    }
    /**
     * 具体产品2
     */
     static  class ConcreteProduct2 implements Product{
        @Override
        public void show(){
            System.out.println("具体产品2的show方法");
        }
     }
     /**
      * 工厂类
      */
     static class SimpleFactory{
         public static Product makeProduct(int number){
             switch (number){
                 case 1:
                     return new ConcreteProduct1();
                 case 2:
                     return new ConcreteProduct2();
                 default:
                     break;
             }
             return null;
         }
     }