作用:用来增加产品族的。对于增加新的产品,使用简单工厂较好。

抽象工厂模式是方法工厂模式的升级,在多个业务品种,多个业务分类时,使用抽象工厂模式生产较方便。

代码演示生产高配和低配的产品族:

1.抽象发动机对象:

 

public interface Engine {
    void run();
    void start();
}

(1)高端发动机对象

class LuxuryEngine implements Engine{

    @Override
    public void run() {
        System.out.println("高端发动机转速快");
    }

    @Override
    public void start() {
        System.out.println("高端发动机自动启停");
    }
}

(2)低端发动机

class LowerEngine implements Engine{

    @Override
    public void run() {
        System.out.println("低端发动机转速慢");
    }

    @Override
    public void start() {
        System.out.println("低端发动机没有自动启停");
    }
}

2.抽象座椅对象:

public interface Seat {
    void massage();
}

(1)高端座椅

class LuxurySseat implements Seat{

    @Override
    public void massage() {
        System.out.println("高端座自动按摩");
    }
}

(2)低端座椅

class LowerSeat implements Seat{

    @Override
    public void massage() {
        System.out.println("低端座椅简洁");
    }
}

3.抽象轮胎对象:

public interface Tyre {
    void revolve();
}

(1)高端轮胎对象

class Luxurytyre implements Tyre{

    @Override
    public void revolve() {
        System.out.println("高端轮胎抓力好磨损满");
    }
}

(2)低端轮胎对象

class LowerTyre implements Tyre{

    @Override
    public void revolve() {
        System.out.println("低端轮胎磨损快");
    }
}

4.抽象工厂对象

public interface CarFactory {
    Engine createEngine();
    Seat createSeat();
    Tyre creattyre();
}

(1)高端配件工厂对象

class LuxuryCarFactory implements CarFactory{

    @Override
    public Engine createEngine() {
        return new LuxuryEngine();
    }

    @Override
    public Seat createSeat() {
        return new LuxurySseat();
    }

    @Override
    public Tyre creattyre() {
        return new Luxurytyre();
    }
}

(2)低端配件工厂对象

class LowerCarFactory implements CarFactory{

    @Override
    public Engine createEngine() {
        return new LowerEngine();
    }

    @Override
    public Seat createSeat() {
        return new LowerSeat();
    }

    @Override
    public Tyre creattyre() {
        return new LowerTyre();
    }
}

5.测试:

 public static void main(String[] args) {
        LuxuryCarFactory luxuryCarFactory = new LuxuryCarFactory();

        Engine Luxryengine = luxuryCarFactory.createEngine();
        Luxryengine.run();
        Luxryengine.start();

        Seat luxurySeat = luxuryCarFactory.createSeat();
        luxurySeat.massage();

        Tyre luxurytyre = luxuryCarFactory.creattyre();
        luxurytyre.revolve();
    }

结果:

高端发动机转速快
高端发动机自动启停
高端座自动按摩
高端轮胎抓力好磨损满

更多推荐

抽象工厂设计模式