package ecjtu.mjh.abstr; /** * 抽象工厂模式:生产汽车的多种配件的多种型号产品 * 两个重要概念: * 产品等级结构:产品的继承结构。 * 产品族:在抽象工厂模式中,产品族(Dough、Sauce)是指由同一个工厂生产的, * 位于不同产品等级结构中的一组产品。 */ //产品类 //产品1:引擎 interface Engine{ } class EngineA implements Engine{ public EngineA() { System.out.println("生产引擎A"); } } class EngineB implements Engine{ public EngineB() { System.out.println("生产引擎B"); } } //产品2:轮胎 interface Tyre{ } class TyreA implements Tyre{ public TyreA() { System.out.println("生产轮胎A"); } } class TyreB implements Tyre{ public TyreB() { System.out.println("生产轮胎B"); } } //工厂类 //抽象工厂接口 interface AbstractFactory{ public Engine createEngine(); public Tyre createTyre(); } class FactoryBMW320 implements AbstractFactory{ //生产宝马320系列配件的工厂:需要引擎A和轮胎A @Override public Engine createEngine() { // TODO Auto-generated method stub return new EngineA(); }
@Override public Tyre createTyre() { // TODO Auto-generated method stub return new TyreA(); } } class FactoryBMW523 implements AbstractFactory{ //生产宝马523系列配件的工厂:需要引擎B和轮胎B @Override public Engine createEngine() { // TODO Auto-generated method stub return new EngineB(); }
@Override public Tyre createTyre() { // TODO Auto-generated method stub return new TyreB(); } } public class Customer { public static void main(String[] args) { //要生产宝马320的配件的工厂 FactoryBMW320 f320 = new FactoryBMW320(); f320.createEngine(); f320.createTyre(); //要生产宝马523的配件的工厂 FactoryBMW523 f523 = new FactoryBMW523(); f523.createEngine(); f523.createTyre(); } }