java设计模式之抽象工厂模式
2013-10-21 21:15
399 查看
网上已经有很多关于设计模式的介绍。这里偶也说一下自己对设计模式的理解。
抽象工厂模式:它的优点就是能将各个功能模块划分的比较干净。咱们就以网上常见的奶茶铺作为例子。如果我们需要设计一个能贩卖多种奶茶的奶茶铺,那我们该如何
设计呢?
1.我们需要设计一个公共奶茶的调配接口(allocate)
2.各类奶茶实现这个接口
3.有一个专门生产奶茶的工厂(factory)
4.无论什么奶茶铺,只要调用这个调配接口(allocate)即可完成.
示例代码如下
1.定义公共接口
2.各类奶茶实现这个接口
3.创建一个工厂
4.奶茶铺取得奶茶
上述就是简单的抽象工厂示例。这样的好处在哪里:
1.如果这段代码是由2个人来编写。A编写奶茶,B编写奶茶铺。则大家其实都只需要对allocate这个函数理解正确即可。奶茶的具体实现和奶茶铺的具体实现
没有任何关系。这个就是所说的针对接口编程。
2.如果写过C语言的话,大家可能对于C语言的函数映射印象深刻,即用一个数组保存一系列的函数指针,然后根据不同的状态,调用对于数组的函数指针即可。
很多C代码中都会使用这样的方法实现状态机。
其实使用抽象工厂的思想,也可以实现相同的功能。
具体代码如下:
接下来调用的方法就如下:
milkTea[Type0].allocate();
使用上面的方法我们可以将数据和具体的逻辑完全的分开。
这个就是我对抽象工厂的理解。
抽象工厂模式:它的优点就是能将各个功能模块划分的比较干净。咱们就以网上常见的奶茶铺作为例子。如果我们需要设计一个能贩卖多种奶茶的奶茶铺,那我们该如何
设计呢?
1.我们需要设计一个公共奶茶的调配接口(allocate)
2.各类奶茶实现这个接口
3.有一个专门生产奶茶的工厂(factory)
4.无论什么奶茶铺,只要调用这个调配接口(allocate)即可完成.
示例代码如下
1.定义公共接口
interface milkteaAllocate { public void allocate(); }
2.各类奶茶实现这个接口
class milkteaType1 implements milkteaAllocate { @Override public void allocate() { System.out.println("milkteaType1"); } }
3.创建一个工厂
public static milkteaAllocate getMilk(int type) { switch(type) { case TYPE1: return new milkteaType1(); case TYPE2: //TODO default: return null; } }
4.奶茶铺取得奶茶
public class milkteaStore { public void getMilkTea() { factory.getMilk(factory.TYPE1).allocate(); } }
上述就是简单的抽象工厂示例。这样的好处在哪里:
1.如果这段代码是由2个人来编写。A编写奶茶,B编写奶茶铺。则大家其实都只需要对allocate这个函数理解正确即可。奶茶的具体实现和奶茶铺的具体实现
没有任何关系。这个就是所说的针对接口编程。
2.如果写过C语言的话,大家可能对于C语言的函数映射印象深刻,即用一个数组保存一系列的函数指针,然后根据不同的状态,调用对于数组的函数指针即可。
很多C代码中都会使用这样的方法实现状态机。
其实使用抽象工厂的思想,也可以实现相同的功能。
具体代码如下:
public static final int TYPE0 = 0; public static final int TYPE1 = 1; public static final int TYPE2 = 2; public static final int TYPE3 = 2; public static final int TYPE4 = 2; milkTeaAllocate milkTea[] = { new milkteaType0(), new milkteaType1(), new milkteaType2(), new milkteaType3(), new milkteaType4(), } ;
接下来调用的方法就如下:
milkTea[Type0].allocate();
使用上面的方法我们可以将数据和具体的逻辑完全的分开。
这个就是我对抽象工厂的理解。
相关文章推荐
- Java设计模式-----Abstract Factory抽象工厂模式
- Java设计模式笔记(3)抽象工厂模式
- Java设计模式之抽象工厂模式
- java 设计模式-创建模式之抽象工厂模式
- java设计模式之抽象工厂模式
- java设计模式2--抽象工厂模式(Abstract Factory)
- java设计模式(创建型)之抽象工厂模式
- java语言实现创建型设计模式—抽象工厂模式
- Java设计模式之从[星际争霸1]分析抽象工厂模式
- JAVA设计模式--抽象工厂模式
- java设计模式之工厂方法模式以及简单工厂模式还有抽象工厂模式
- 浅谈 java 设计模式--抽象工厂模式(AbstractFactory pattern)
- java设计模式之抽象工厂模式
- Java设计模式编程中简单工厂与抽象工厂模式的使用实例
- Java设计模式 - 抽象工厂模式(Abstract Factory)
- JAVA设计模式之抽象工厂模式
- Java设计模式-抽象工厂模式
- Java设计模式(2)之抽象工厂模式
- Java学习笔记---设计模式之抽象工厂模式
- JAVA设计模式之抽象工厂模式