设计模式-抽象工厂模式

102 阅读1分钟

抽象工厂模式

当我们想生产的实例有多种时,基于工厂模式,就有了抽象工厂模式,抽象工厂模式 更倾向于组合的逻辑

factory

public interface AbstractFactory {
    Car produceCar();

    Tyre produceTyre();
}
public class WulingFactory implements AbstractFactory{

    @Override
    public Car produceCar() {
        return new WulingCar();
    }

    @Override
    public Tyre produceTyre() {
        return new WulingTyre();
    }
}
public class BenzFactory implements AbstractFactory{

    @Override
    public Car produceCar() {
        return new BenzCar();
    }

    @Override
    public Tyre produceTyre() {
        return new BenzTyre();
    }
}
interface Car {
    String fly();
}
public interface Tyre {
    String walk();
}
public class WulingCar implements Car{
    @Override
    public String fly() {
        return "I am Wuling Car";
    }
}
public class BenzCar implements Car{
    @Override
    public String fly() {
        return "I am Benz Car";
    }
}
public class BenzTyre implements Tyre{

    @Override
    public String walk() {
        return "I am BenzTyre";
    }
}
public class WulingTyre implements Tyre{

    @Override
    public String walk() {
        return "I am WulingTyre";
    }
}
public class Test {
    public static void main(String[] args){
        BenzFactory benzFactory = new BenzFactory();
        Car benzCar = benzFactory.produceCar();
        Tyre benzTyre = benzFactory.produceTyre();
        System.out.println(benzCar.fly());
        System.out.println(benzTyre.walk());

        WulingFactory wulingFactory = new WulingFactory();
        Car wulingCar = wulingFactory.produceCar();
        Tyre wulingTyre = wulingFactory.produceTyre();
        System.out.println(wulingCar.fly());
        System.out.println(wulingTyre.walk());
    }
}

print:
I am Benz Car
I am BenzTyre
I am Wuling Car
I am WulingTyre

欢迎关注我的公众号,获得更多信息

image.png