抽象工厂模式
当我们想生产的实例有多种时,基于工厂模式,就有了抽象工厂模式,抽象工厂模式 更倾向于组合的逻辑
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