【java设计模式系列】3. 抽象工厂模式(Abstract Factory)
2016-09-23 17:21
525 查看
假设现在有一个车辆制造工厂,它生产两种车,A类车和B类车,每类车有其各自的车门和轮子,这就需要不同的车间来做,A类车的车间有生产车门的工作,有生产轮子的工作,B类车的车间有生产车门的工作,有生产轮子的工作,我们需要哪类车的部件时,就去哪个车间拿,拿的过程(相同的操作,抽取出来一个抽象工厂类,这里的拿就是指方法)是一样的。
下面用代码具体实现:
代码清单1:生产门(抽象产品)
代码清单2:生产A门(具体产品)
代码清单3:生产B门(具体产品)
代码清单4:生产轮子(抽象产品)
代码清单5:生产A轮子(具体产品)
代码清单6:生产B轮子(具体产品)
代码清单7:抽象工厂
代码清单8:具体A工厂
代码清单9:具体B工厂
代码清单10:测试类
总结:
抽象工厂模式相对于工厂方法模式来说,每个具体工厂可以生产一族产品(即多种产品);而工厂方法模式是具体工厂生产相应的具体产品,只能生产一种产品。当产品族中只有一种产品时抽象工厂模式退化成工厂方法模式。
附抽象工厂类图:
原文地址:http://men4661273.iteye.com/blog/1637880
下面用代码具体实现:
代码清单1:生产门(抽象产品)
public interface Door { void createDoor(); }
代码清单2:生产A门(具体产品)
public class DoorA implements Door { @Override public void createDoor() { System.out.println("create door A."); } }
代码清单3:生产B门(具体产品)
public class DoorB implements Door{ @Override public void createDoor() { System.out.println("create door B."); } }
代码清单4:生产轮子(抽象产品)
public interface Wheel { void createWheel(); }
代码清单5:生产A轮子(具体产品)
public class WheelA implements Wheel { @Override public void createWheel() { System.out.println("create wheel A."); } }
代码清单6:生产B轮子(具体产品)
public class WheelB implements Wheel { @Override public void createWheel() { System.out.println("create wheel B."); } }
代码清单7:抽象工厂
public abstract class AbstractFactory { public abstract void createDoor(); public abstract void createWheel(); }
代码清单8:具体A工厂
public class FactoryA extends AbstractFactory { @Override public void createDoor() { new DoorA().createDoor(); } @Override public void createWheel() { new WheelA().createWheel(); } }
代码清单9:具体B工厂
public class FactoryB extends AbstractFactory { @Override public void createDoor() { new DoorB().createDoor(); } @Override public void createWheel() { new WheelB().createWheel(); } }
代码清单10:测试类
public class Test { public static void main(String[] args) { new FactoryA().createDoor(); new FactoryA().createWheel(); new FactoryB().createDoor(); new FactoryB().createWheel(); } }输出结果:
create door A. create wheel A. create door B. create wheel B.
总结:
抽象工厂模式相对于工厂方法模式来说,每个具体工厂可以生产一族产品(即多种产品);而工厂方法模式是具体工厂生产相应的具体产品,只能生产一种产品。当产品族中只有一种产品时抽象工厂模式退化成工厂方法模式。
附抽象工厂类图:
原文地址:http://men4661273.iteye.com/blog/1637880
相关文章推荐
- Java设计模式菜鸟系列(五)抽象工厂模式建模与实现
- JAVA系列-设计模式-抽象工厂模式
- 常用Java设计模式系列(5)- 简单工厂、工厂方法模式和抽象工厂模式
- Java/Android 设计模式系列(4)--抽象工厂模式
- java中的设计模式(三)--抽象工厂模式 反射机制
- 23种经典设计模式的java实现_1_抽象工厂模式
- Java设计模式-----Abstract Factory抽象工厂模式
- Java 可复用的面向对象的设计模式之 工厂模式Factory详解 :简单工厂模式 工厂方法模式 抽象工厂模式
- java设计模式学习系列之六:Observer, 观察者模式---小例
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 设计模式实现系列-简单工厂模式-工厂模式-抽象工厂模式
- 极速理解设计模式系列:10.抽象工厂模式(Abstract Factory Pattern)
- java设计模式学习系列之一:单例模式(Singleton)
- 设计模式之—抽象工厂模式(Abstract Factory)-Java实现
- JAVA设计模式之抽象工厂模式
- 极速理解设计模式系列:10.抽象工厂模式(Abstract Factory Pattern)
- 用Java实现的设计模式系列(3)--Builder
- java设计模式学习系列之一:单例模式(Singleton) 收藏
- 23种经典设计模式的java实现_1_抽象工厂模式
- JAVA设计模式系列之Adapter(适配器)-Java基础-Java-编程开发