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;
}
}

浙公网安备 33010602011771号