美文网首页
设计模式 —— 工厂方法模式

设计模式 —— 工厂方法模式

作者: deve_雨轩 | 来源:发表于2021-08-18 14:24 被阅读0次

    概念

    工厂方法模式又称工厂模式,也叫多态工厂模式,属于类创建型模式
    工厂方法模式实质就是: 把创建对象的过程抽象出来不实现,让其子类或实现类来决定实例化那个类.

    实现方式

    我们先简单的来看看工厂模式的组成:

    1. 抽象工厂(abstract factory): 抽象对象.
    2. 具体工厂实现(real factory): 实际创建对象的工厂,负责创建一个或多个对象。
    3. 抽象产品(abstract product): 工厂角色生产的所有对象都需要依赖此抽象。一般通过接口或者抽象类来实现.
    4. 具体产品实现(real product): 具体的产品实现,依赖抽象角色.由工厂角色来创建

    抽象Car

    /**
    * car抽象
    */
    public abstract class Car {
        /**
        * 车俩启动
        */
        public abstract void run();
    }
    
    

    具体Car实现

    /**
    * 宝马车辆实现类
    * @author yuxuan
    */
    public class BMWCar extends Car{
    
        @Override
        public void run() {
            System.out.println("BMW run");
        }
    }
    
    
    public class QQCar extends Car{
    
        @Override
        public void run() {
            System.out.println("QQ run");
        }
    }
    

    抽象工厂

    /**
    * 抽象工厂
    */
    public abstract class CarFactory {
        public abstract Car createCar();
    }
    

    具体工厂实现

    /**
    * 宝马用来创建车辆的工厂类
    * @author yuxuan
    */
    public class BMWCarFactory extends CarFactory{
        public Car createCar() {
            return new BMWCar();
        }
    }
    
    
    /**
    * 宝马用来创建车辆的工厂类
    * @author yuxuan
    */
    public class QQCarFactory extends CarFactory{
        public Car createCar() {
            return new QQCar();
        }
    }
    
    

    工厂方法模式的优缺点

    优点

    • 在工厂方法模式中,使用方只需要知道所要对象的具体工厂,无须关心具体的创建过程,甚至不需要具体类的类名
    • 在系统增加新的对象时,我们只需要添加一个具体实现类和对应的实现工厂,无需对原工厂进行任何修改,很好地符合了“开闭原则”

    缺点

    • 每次增加一个对象时,都需要增加一个具体类和对象实现工厂,是的系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。

    总结

    • 工厂方法模式完全符合“开闭原则”。
    • 工厂方法模式使用继承,将对象的创建交给子类,通过子类实现工厂方法来创建对象。
    • 工厂方法让子类决定要实例化的类是哪一个。
    • 在工厂方法模式中,创建者通常会包含依赖于抽象产品的代码,而这些抽象产品是、由子类创建的,创建者不需要真的知道在制作哪种具体产品。

    相关文章

      网友评论

          本文标题:设计模式 —— 工厂方法模式

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