博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

设计模式--简单工厂模式

当今社会高福帅的男生是女的选择的标准,可是不是所有的男生都是如此完美,所以萝卜白菜各有所爱,不同的女生来选择不同的男友时的标准也不尽量相同,怎么样写一个程序来尽量可 能适应多的女生使用呢。
男生种类很多不可让一次列出来完,也就是平时的需求变化比较大,怎么能更好的适应变化。
 
所以我们要建立一个造男生的工厂,你只要给我条件我就能给你造出来相应的男生,你只要想要我就给你。
如下图:
代码如下:
 1 //Man
 2  abstract public class Man
 3     {
 4         public abstract void Show();
 5     }
 6 //SmartMan
 7  class SmartMan:Man
 8     {
 9         public override void Show()
10         {
11            // base.Show();
12             Console.WriteLine("这是一个帅哥");
13         }
14     }
15 //PoorMan
16 class PoorMan:Man
17     {
18         public override void Show()
19         {
20           //  throw new NotImplementedException();
21             Console.WriteLine("这是一个三无青年,请不要选择");
22         }
23     }
24 //MoneyMan
25   class MoneyMan:Man
26     {
27         public override void Show()
28         {
29             //base.Show();
30             Console.WriteLine("这是一个富豪");
31         }
32     }
33 //HighMan
34  class HighMan:Man
35     {
36         public override void Show()
37         {
38             //base.Show();
39             Console.WriteLine("这是一个高大的男生");
40         }
41     }
42 //ManFactory
43 class ManFactory
44     {
45         public static Man CreateManOperation(string strCondition)
46         {
47             Man mTemp = null;
48             switch (strCondition)
49             {
50                 case "high":
51                     mTemp = new HighMan();
52                     break;
53                 case "money":
54                     mTemp = new MoneyMan();
55                     break;
56                 case "smart":
57                     mTemp = new SmartMan();
58                     break;
59                 case "poor":
60                     mTemp = new PoorMan();
61                     break;
62 
63                 default:
64                     break;
65             }
66             return mTemp;
67         }
68     }
69 //client
70 class Program
71     {
72         static void Main(string[] args)
73         {
74             string strCondition = Console.ReadLine();
75             do
76             {
77 
78                 Man m_man = ManFactory.CreateManOperation(strCondition);
79                 m_man.Show();
80                 strCondition = Console.ReadLine();
81             } while (!string.IsNullOrEmpty(strCondition));
82 
83             Console.ReadLine();
84         }
85     }

结果如图:

posted @ 2016-05-12 22:36  ants_double  阅读(164)  评论(0编辑  收藏  举报