屏蔽了实现细节,有助于集成不同对象.
适用于: 1.系统需要屏蔽有关对象如何创建,如何组织和如何表示
2.系统需要由关联的多个对象来构成
3.有关联的多个对象需要一起应用并且它们的约束是强迫的(不可分离)4.你想提供一组对象而不显示它们的实现过程,只显示它们的接口
例:
电脑由CPU,主板,硬盘
而CPU又分为AMD和INTEL,而硬盘又分为西数,迈拓,其它硬件也有其他厂商,于是有以下接口和类,
1,可先定义CPU接口
public interface CPU {
public String getCPU();
}
2,实现CPU类
public class AMD implements CPU {
@Override
public String getCPU() {
// TODO Auto-generated method stub
return "Athlon xp 3200+";
}
}
public class Intel implements CPU {
@Override
public String getCPU() {
// TODO Auto-generated method stub
return "奔腾4 T3200";
}
}
其它硬件类似CPU即可实现
3.实现抽象工厂
//抽象类
public abstract class ComputerFactory {
CPU cpu;
HardDisk hd;
MainBoard mb;
public void show() {
try {
System.out.println(this.getClass().getName().toString()
+ "生产的电脑配置");
System.out.println("CPU:" + cpu.getCPU());
System.out.println("HardDisk:" + hd.getSize());
System.out.print("MainBoard:");
mb.Attach(cpu);
}
catch (Exception e) {
System.err.println(e.getMessage());
}
}
}
// 继承抽象类,用于实现具体硬件产品
public class IBM extends ComputerFactory {
public IBM() {
cpu = new Intel();
hd = new WestDigit();
mb = new MSI865PE();
}
}
4.客户端的使用
public class Client {
public static void main(String[] args) {
IBM ibm = new IBM();
ibm.show();
Dell dell = new Dell();
dell.show();
}
}
直接从抽象工厂生产即可,封装了实现细节.