抽象工厂模式

[注:原文地址:http://www.sudu.cn/info/html/edu/20070421/319122.html]

当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知道实例化哪一个子类呢?比如每个抽象产品角色都有两个具体产品。抽象工厂模式提供两个具体工厂角色,分别对应于这两个具体产品角色,每一个具体工厂角色只负责某一个产品角色的实例化。每一个具体工厂类只负责创建抽象产品的某一个具体子类的实例。  每一个模式都是针对一定问题的解决方案,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式针对的是多个产品等级结果。

逻辑模式

物理模型

 

1 public abstract class AbstractProduct
2 {
3 public AbstractProduct() {
4
5 }
6
7 private string productName;
8 public string ProductName
9 {
10 get { return this.productName; }
11 set { this.productName = value;}
12 }
13
14 private string productModel;
15 public string ProductModel
16 {
17 get { return this.productModel; }
18 set { this.productModel = value; }
19 }
20 public abstract void printString();
21 }

 

1 public class productA : AbstractProduct
2 {
3 public override void printString()
4 {
5 Console.WriteLine(string.Format("ProductName:{0},ProductModel:{1}", ProductName, ProductModel));
6 }
7 }

 

1 public abstract class AbstractFactory
2 {
3 public abstract AbstractProduct createProduct();
4 }

 

1 public class FactoryA : AbstractFactory
2 {
3 public override AbstractProduct createProduct()
4 {
5 return new productA();
6 }
7 }

 

1 class Program
2 {
3 static void Main(string[] args)
4 {
5 FactoryA fa = new FactoryA();
6 AbstractProduct ap = fa.createProduct();
7 ap.ProductName = "ThinkPad";
8 ap.ProductModel = "X200";
9 ap.printString();
10 Console.ReadLine();
11 }
12 }

 

 

posted on 2010-09-03 16:27  Tim's Home  阅读(214)  评论(0编辑  收藏  举报