抽象工厂模式是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂
业务类:
发动机:
1、Engine:
public abstract class Engine {
public abstract void createEngine();
}
1)BaoMaEngine:
public class BaoMaEngine extends Engine{
@Override
public void createEngine() {
System.out.println("宝马发动机...");
}
}
2)BenChiEngine:
public class BenChiEngine extends Engine{
@Override
public void createEngine() {
System.out.println("奔驰发动机...");
}
}
颜色:
2、Colour:
public abstract class Colour {
public abstract void createColour();
}
1)Red:
public class Red extends Colour {
@Override
public void createColour() {
System.out.println("红色喷漆...");
}
}
2)Black:
public class Black extends Colour {
@Override
public void createColour() {
System.out.println("黑色喷漆...");
}
}
工厂类:
CarFactory:
public abstract class CarFactory {
public abstract Engine getEngine();
public abstract Colour getColour();
}
1、EngineFactory:
public abstract class EngineFactory extends CarFactory{
public abstract Engine getEngine();
}
1)BaoMaFactory:
public class BaoMaFactory extends EngineFactory{
@Override
public Engine getEngine() {
return new BaoMaEngine();
}
@Override
public Colour getColour() {
//Do Nothing
//此处为语法要求,没有任何世纪作用
return null;
}
}
2)BenChiFactory:
public class BenChiFactory extends EngineFactory{
@Override
public Engine getEngine() {
return new BenChiEngine();
}
@Override
public Colour getColour() {
//Do Nothing
//此处为语法要求,没有任何世纪作用
return null;
}
}
2、ColourFactory:
public abstract class ColourFactory extends CarFactory{
public abstract Colour getColour();
}
1)RedFactory
public class RedFactory extends ColourFactory{
@Override
public Engine getEngine() {
//Do Nothing
//此处为语法要求,没有任何世纪作用
return null;
}
@Override
public Colour getColour() {
return new Red();
}
}
2)BlackFactory
public class BlackFactory extends ColourFactory{
@Override
public Engine getEngine() {
//Do Nothing
//此处为语法要求,没有任何世纪作用
return null;
}
@Override
public Colour getColour() {
return new Black();
}
}
Test:
public class Test {
public static void main(String[] args) {
CarFactory carColour=new BlackFactory();
CarFactory carEngine=new BaoMaFactory();
Colour colour=carColour.getColour();
Engine engine=carEngine.getEngine();
colour.createColour();
engine.createEngine();
}
}
运行结果:
黑色喷漆...
宝马发动机...