抽象工厂模式
(1)关系图
(2)优点
1.具有工厂方法模式解耦的优点。
2. 工厂模式针对的是一个产品等级结构,抽象工厂模式针对的是面向多个产品等级结构的。
(3)缺点
1.产品族的扩展将是一件十分费力的事情,假如产品族中需要增加一个新的产品,则几乎所有的工厂类都需要进行修改。
(4)代码
ProductA:
public interface Air_conditioner {
void work();
}
public class Air_conditioner_Haier implements Air_conditioner {
public void work() {
System.out.println(" Air_conditioner_Haier is working ...");
}
}
public class Air_conditioner_Gree implements Air_conditioner {
public void work() {
System.out.println(" Air_conditioner_Gree is working ...");
}
}
ProductB:
public interface Engine {
void work();
}
public class Engine_Domestic implements Engine{
public void work() {
System.out.println(" Engine_Domestic is working...");
}
}
public class Engine_Import implements Engine{
public void work() {
System.out.println(" Engine_Import is working...");
}
}
Factory
public interface Abstract_CarFactory {
public Air_conditioner install_air_conditioner();
public Engine install_engine();
}
public class CarA implements Abstract_CarFactory {
public Air_conditioner install_air_conditioner () {
return new Air_conditioner_Haier();
}
public Engine install_engine () {
return new Engine_Import();
}
}
public class CarB implements Abstract_CarFactory {
public Air_conditioner install_air_conditioner () {
return new Air_conditioner_Gree();
}
public Engine install_engine () {
return new Engine_Domestic();
}
}