美文网首页
设计模式-简单工厂模式

设计模式-简单工厂模式

作者: 小的橘子 | 来源:发表于2019-02-25 23:53 被阅读0次

    定义

    简单工厂模式属于创建型模式又叫做静态工厂方法模式,是由一个工厂对象决定创建出哪一种产品类的实例。

    UML类图

    简单工厂模式UML图
    • Factory:工厂类,简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
    • IProduct:抽象产品类,简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
    • Product:具体产品类,是简单工厂模式的创建目标。

    简单工厂模式实例

    // 客户端调用工厂类创建电脑
    public class Test {
        public static void main(String[] args) {
            ComputerFactory.createComputer("asus").start();
        }
    }
    // 抽象产品类
    abstract class Computer {
        /**
         * 产品的抽象方法,由具体的产品类去实现
         */
        public abstract void start();
    }
    // 具体产品类联想电脑
    class LenovoComputer extends Computer {
        @Override
        public void start() {
            System.out.println("联想电脑启动");
        }
    }
    // 具体产品类华硕电脑
    class AsusComputer extends Computer {
        @Override
        public void start() {
            System.out.println("华硕电脑启动");
        }
    }
    // 工厂创建类
    class ComputerFactory {
        public static Computer createComputer(String type) {
            Computer mComputer = null;
            switch (type) {
                case "lenovo":
                    mComputer = new LenovoComputer();
                    break;
                case "asus":
                    mComputer = new AsusComputer();
                    break;
    
            }
            return mComputer;
        }
    }
    

    输出

    华硕电脑启动
    

    简单工厂模式使用场景

    1. 工厂类负责创建的对象很明确且比较少。
    2. 客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心。

    简单工厂模式优缺点

    • 优点:
      使用户根据参数获得对应的类实例,避免了直接实例化类,降低了耦合性。
    • 缺点:
      可实例化的类型在编译期间已经被确定,如果增加新类型,则需要修改工厂,违背了开放封闭原则(OCP) 。 简单工厂需要知道所有要生成的类型,当具体产品类过多时不适合使用。

    相关文章

      网友评论

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

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