- 以我们在工厂方法模式中创建汽车为例,假如现在我们想除了创建汽车以外还想创建飞机(j20,f35等等),这样我们又要创建一个飞机的工厂类,那以后又想创建轮船了呢?这样一来我们的主业务中将会出现很多的工厂类。那我们有可以怎么优化呢,这就引入了抽象工厂模式。
- 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式,是工厂方法模式的升级版,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。
// 先定义一个创建汽车接口
public interface BuildCar {
// 创建车的抽象方法
void build();
}
// 定义创建奔驰车的类
public class BcCar implements BuildCar {
void build() {
// 创建奔驰的具体逻辑
...
}
}
// 定义创建宝马车的类
public class BmCar implements BuildCar {
void build() {
// 创建宝马的具体逻辑
...
}
}
// 定义创建凯迪拉克车的类
public class KdlkCar implements BuildCar {
void build() {
// 创建凯迪拉克的具体逻辑
...
}
}
// 定义一个创建飞机接口
public interface BuildAirplaner {
// 创建飞机的抽象方法
void build();
}
// 定义创建将j20的类
public class J20Airplaner implements BuildAirplaner {
void build() {
// 创建j20飞机的具体逻辑
...
}
}
// 定义创建F35的类
public class F35Airplaner implements BuildAirplaner {
void build() {
// 创建F35的具体逻辑
...
}
}
// 创建抽象工厂
public interface IFactory {
BuildCar createCar();
BuildAirplaner createAirplaner();
}
// 创建一个具体的类(创建一辆奔驰和J20)
public Factory implements IFactory {
BuildCar createCar() {
return new BcCar();
}
BuildAirplaner createAirplaner(){
return new J20Airplaner();
}
}
IFactory factory = new Factory();
// 创建奔驰
factory.createCar().build();
// 创建J20
factory.createAirplaner().build();
网友评论