现在的位置: 首页 > 综合 > 正文

第六课 抽象工厂模式

2013年11月15日 ⁄ 综合 ⁄ 共 1387字 ⁄ 字号 评论关闭

第六课 抽象工厂模式

 

       抽象工厂模式其实和工厂方法模式思路一样,可以说是工厂方法模式的一个特例,用于控制一个系列的产品的不同版本。简单举个例子(可能不适用于.net)我现在有几个界面UI控件产品,Button,Label,TextBox。大家应该知道,windowsMac系统底层对UI的实现不同,所以创建控件的方式可能不同。这样我可能出2套产品,一套是为Windows实现的,另一套是基于Mac实现的。这样我为了方便的获得两套产品,就需要用抽象工厂模式。换句话说,抽象工厂在应用的时候,需要判断产品的横向和纵向。假设横向是一个系列的产品,纵向是不同的版本实现的话,就有类似下面这样的一个矩阵。

 

ButtonForWin  LabelForWin  TextBoxForWin

ButtonForMac  LabelForMac  TextBoxForMac

ButtonForLinux   LabelForLinux   TextBoxForLinux

 

其实就是3个产品,Button Label TextBox ,但是针对3个操作系统实现了3个版本而已。

这样大家有点印象了吧,下面开始看代码。Java

首先系列产品的抽象

1.        public interface Button

2.        {

3.            ...

4.        }

5.       

 

6.        public interface Label

7.        {

8.            ...

9.        }

这里我懒的打TextBox了,就用俩来看吧。

 

然后Windows实现:

1.        public class WinButton implements Button

2.        {

3.            ...

4.        }

5.       

 

6.        public class WinLabel implements Label

7.        {

8.            ...

9.        }

 

再看Mac实现:

1.        public class MacButton implements Button

2.        {

3.            ...

4.        }

5.       

 

6.        public class MacLabel implements Label

7.        {

8.            ...

9.        }

 

WindowsMac的实现UI方式肯定不同,这里不描述了。

 

然后来看工厂:

1.       

 

2.        public abstract class UIProducer

3.        {

4.            public abstract Button createButton();

5.       

 

6.            public abstract Label createLabel();

7.       

 

8.            public static UIProducer getInstance(String which)

9.            {

10.         if (which.equalsIgnoreCase(

抱歉!评论已关闭.