简单工厂

简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。


跟随代码:

 

View Code
 1 /// <summary>
 2 /// 基类/接口/抽象类
 3 /// </summary>
 4 public class Person
 5 {
 6       public virtual void ShowMsg() { }
 7 }
 8 
 9 /// <summary>
10 /// 实现类
11 /// </summary>
12 public class Chinese : Person
13 {
14             public override void ShowMsg()
15             {
16                 Console.WriteLine("I am Chinese!");
17             }
18 }
19 
20 /// <summary>
21 /// 实现类
22 /// </summary>
23 public class English : Person
24 {
25             public override void ShowMsg()
26             {
27                 Console.WriteLine("I am English!");
28             }
29 }
30 
31 /// <summary>
32 /// 实现类
33 /// </summary>
34 public class Japanese : Person
35 {
36             public override void ShowMsg()
37             {
38                 Console.WriteLine("I am Japanese!");
39             }
40 }
41 
42 /// <summary>
43 /// 工厂类
44 /// </summary>
45 public static class SFactory
46 {
47       /// <summary>
48       /// 通过面向对象的多态性,根据客户端输入的参数,返回基类(接口/抽象类)类型的实例
49       /// </summary>
50       /// <param name="parmVal">parmVal</param>
51       /// <returns>Person</returns>
52       public static Person Create(string parmVal)
53       {
54                 Person per = null;
55                 switch (parmVal)
56                 {
57                     case "e":
58                         per = new English();
59                         break;
60                     case "c":
61                         per = new Chinese();
62                         break;
63                     case "j":
64                         per = new Japanese();
65                         break;
66                     default:
67                         break;
68                 }
69                 return per;
70        }
71 }

 

图示:

 

 

使用:

  1. 工厂类负责创建的对象比较少;    
  2. Client端只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;
  3. 由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。
posted @ 2012-07-09 16:58  帕丁顿熊  阅读(160)  评论(0编辑  收藏  举报