美文网首页
抽象工厂模式

抽象工厂模式

作者: Exception_22bf | 来源:发表于2020-10-30 16:53 被阅读0次
  • 以我们在工厂方法模式中创建汽车为例,假如现在我们想除了创建汽车以外还想创建飞机(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();

相关文章

网友评论

      本文标题:抽象工厂模式

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