设计模式-抽象工厂模式(Abstract Factory)
2013-07-08 00:00
323 查看
1.一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。
2.这个系统的产品有多于一个的产品族,而系统只消费其中某一族的产品。
3.同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。(比如:Intel主板必须使用Intel CPU、Intel芯片组)
4.系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。
Cpu.java
IntelCpu.java
AmdCpu.java
Mainboard.java
IntelMainboard.java
AmdMainboard.java
ComputerFactory.java
IntelComputerFactory.java
AmdComputerFactory.java
Main.java
参考实例来源于博客特种兵—AK47的《JAVA与模式》26天系列—第3天—抽象工厂模式的文章,仅供自己学习用。
2.这个系统的产品有多于一个的产品族,而系统只消费其中某一族的产品。
3.同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。(比如:Intel主板必须使用Intel CPU、Intel芯片组)
4.系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。
Cpu.java
package cn.foxeye.design.abstractfactory; public interface Cpu { void getCpuTypeName(); }
IntelCpu.java
package cn.foxeye.design.abstractfactory; public class IntelCpu implements Cpu { private String cpuTypeName = "Intel"; @Override public void getCpuTypeName() { System.out.println("CPU 型号:" + cpuTypeName); } }
AmdCpu.java
package cn.foxeye.design.abstractfactory; public class AmdCpu implements Cpu { private String cpuTypeName = "AMD"; @Override public void getCpuTypeName() { System.out.println("CPU 型号:" + cpuTypeName); } }
Mainboard.java
package cn.foxeye.design.abstractfactory; public interface Mainboard { void getMainboardTypeName(); }
IntelMainboard.java
package cn.foxeye.design.abstractfactory; public class IntelMainboard implements Mainboard { private String mainboardTypeName = "Intel"; @Override public void getMainboardTypeName() { System.out.println("主板型号:" + mainboardTypeName); } }
AmdMainboard.java
package cn.foxeye.design.abstractfactory; public class AmdMainboard implements Mainboard { private String mainboardTypeName = "AMD"; @Override public void getMainboardTypeName() { System.out.println("主板型号:" + mainboardTypeName); } }
ComputerFactory.java
package cn.foxeye.design.abstractfactory; public interface ComputerFactory { Cpu createCpu(); Mainboard createMainboard(); }
IntelComputerFactory.java
package cn.foxeye.design.abstractfactory; public class IntelComputerFacotry implements ComputerFactory { @Override public Cpu createCpu() { return new IntelCpu(); } @Override public Mainboard createMainboard() { return new IntelMainboard(); } }
AmdComputerFactory.java
package cn.foxeye.design.abstractfactory; public class AmdComputerFacotry implements ComputerFactory { @Override public Cpu createCpu() { return new AmdCpu(); } @Override public Mainboard createMainboard() { return new AmdMainboard(); } }
Main.java
package cn.foxeye.design.abstractfactory; public class Main { public static void main(String[] args) { ComputerFactory factory = new AmdComputerFacotry(); factory.createCpu().getCpuTypeName(); factory.createMainboard().getMainboardTypeName(); } }
参考实例来源于博客特种兵—AK47的《JAVA与模式》26天系列—第3天—抽象工厂模式的文章,仅供自己学习用。
相关文章推荐
- 设计模式----抽象工厂模式UML和实现代码
- 用代码和UML图化解设计模式之《抽象工厂模式》
- 23种设计模式(3):抽象工厂模式
- Java设计模式编程中的工厂方法模式和抽象工厂模式
- JAVA设计模式--抽象工厂模式
- Java设计模式之抽象工厂模式
- 设计模式学习笔记--抽象工厂模式
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 设计模式的总结二:创造型模式-抽象工厂模式
- 用星际学习PHP设计模式3-抽象工厂模式[转]
- 设计模式学习--抽象工厂模式
- C#设计模式之工厂模式(Factory)--03 抽象工厂模式(Abstract Factory)
- 23种设计模式(3):抽象工厂模式
- 设计模式之 抽象工厂模式
- java设计模式(二)--抽象工厂模式
- java23种常用设计模式之抽象工厂模式(Abstract Factory)
- 设计模式学习--------8.抽象工厂模式学习
- 设计模式初探-抽象工厂模式
- 设计模式-抽象工厂模式
- 设计模式——抽象工厂模式