设计模式之简单工厂模式

来源于http://www.cnblogs.com/wangjq/archive/2012/07/02/2558255.html

参考百度百科:http://baike.baidu.com/link?url=a474oHwogbzMHn7sFmOmbcc5DSbyquwAnhcgYmTzti4o6IG4u9PVs4ub4axkz8qx-lrv5rafK3RoiRK31p_7vK

常用语实例化对象:

一个工厂长生产多个同类产品   一对多

多个工厂生产多个同类产品    多对多

 不同工厂生产不同产品       多对多

1. 概述:

  将一个具体类的实例化交给一个静态工厂方法来执行,它不属于GOF的23种设计模式,但现实中却经常会用到

2. 模式中的角色

  2.1 工厂类(Simple Factory): 只包含了创建具体类的静态方法。

  2.2 抽象产品(Product):定义简单工厂中要返回的产品。

  2.3 具体产品(ConcreteProduct):具体产品。

3. 模式解读

  3.1 简单工厂模式的一般化类图

  

  3.2 简单工厂模式的代码实现

 1     /// <summary>
 2     /// 简单工厂类,用sealed修饰,
 3     /// </summary>
 4     public class SimpleProductFactory
 5     {
 6         /// <summary>
 7         /// 使用静态方法,根据传入的参数来指定要实例化哪一种产品
 8         /// </summary>
 9         /// <param name="productType"></param>
10         /// <returns></returns>
11         public static Product CreateProduct(string productType)
12         {
13             Product product = null;
14             switch (productType)
15             {
16                 case "A":
17                     product = new ConcreteProductA();
18                     break;
19                 case "B":
20                     product = new ConcreteProductB();
21                     break;
22             }
23 
24             return product;
25         }
26     }
27 
28     /// <summary>
29     /// 抽象产品
30     /// </summary>
31     public abstract class Product
32     {
33         public Product()
34         { }
35 
36         public abstract void Opration();
37     }
38 
39     /// <summary>
40     /// 具体产品 A
41     /// </summary>
42     public class ConcreteProductA : Product
43     {
44         public ConcreteProductA() { }
45 
46         public override void Opration()
47         {
48             // 产品A
49         }
50     }
51 
52     /// <summary>
53     /// 具体产品 B
54     /// </summary>
55     public class ConcreteProductB : Product
56     {
57         public ConcreteProductB() { }
58 
59         public override void Opration()
60         {
61             //产品B
62         }
63     }
View Code

 

posted on 2015-07-20 13:37  魔天天  阅读(114)  评论(0编辑  收藏  举报