23种设计模式(工厂模式)

工厂模式(简单工厂)

表现:

定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类,客户端可以免除直接创建产品对象的职责

需要什么,只需要传入一个正确的参数,就可以获取所需要的对象,而无需知道其实现过程

适用环境:

工厂类负责创建对的对象比较少,因为不会造成工厂方法中的业务逻辑过于复杂

客户端只知道传入工厂类的参数,对如何创建对象不关心

具体步骤:

1.在工厂类中定义静态常量
2.多态应用: 方法的返回类型写成父类

缺点:

工厂类集中了所有产品的创建逻辑,职责过重,一旦异常,整个系统将受影响

使用简单工厂模式会增加系统中类的个数(引入新的工厂类),增加系统的复杂度和理解难度

系统扩展困难,一旦增加新产品不得不修改工厂逻辑,在产品类型较多时,可能造成逻辑过于复杂

简单工厂模式使用了static工厂方法,造成工厂角色无法形成基于继承的等级结构。

写法模版:

public class VehicleFactory {
    /**
     *  常量定义,public static final
     *  注意:
     *  常量一般都是公开的
     *  final表示这个常量无法被改变
     *  常量的命名全部采用大写字母,多个单词的话中间用_隔开
     *  作用: 安全(不能改) + 提高代码的可读性
     */
    public static final int BIKE = 1;
    public static final int CAR = 2;
    public static final int PLANE = 3;
    public static final int MOTOBIKE = 4;
    public static final int BOAT = 5;

    /**多态应用: 方法的返回类型写成父类*/
    public static Vehicle getVehicle(int type) {
        Vehicle vehicle = null;
        if (type == BIKE) {
            vehicle = new Bike();
        } else if (type == CAR) {
            vehicle = new Car();
        } else if (type == PLANE) {
            vehicle = new Plane();
        } else if (type == MOTOBIKE) {
            vehicle = new MotoBike();
        } else if (type == BOAT) {
            vehicle = new Boat();
        } else {
            System.out.println("参数有误!");
        }
        return vehicle;
    }
}
posted @ 2022-03-19 14:23  JanoCode  阅读(54)  评论(0)    收藏  举报