设计模式 之 抽象工厂模式

设计模式 之 抽象工厂模式

 1 /// <summary>
 2     /// 根据实例化 不同的工厂,生产出产品, 最后调用实现该具体产品的方法实现。
 3     /// </summary>
 4     class Program
 5     {
 6         static void Main(string[] args)
 7         {
 8             Abstractfactory factory = new FactoryA();
 9             Client c1 = new Client(factory);
10             c1.Run();
11             Console.Read();
12         }
13     }
14     //抽象工厂 主要是生产啥产品
15     abstract class Abstractfactory
16     {
17         public abstract AbsProductA CreateProductA();
18         public abstract AbsProductB CreateProductB();
19     }
20     class FactoryA : Abstractfactory
21     {
22         public override AbsProductB CreateProductB()
23         {
24             return new Product2();
25         }
26         public override AbsProductA CreateProductA()
27         {
28             return new Product1();
29         }
30     }
31     class FactoryB : Abstractfactory
32     {
33         public override AbsProductB CreateProductB()
34         {
35             return new Product2();
36         }
37         public override AbsProductA CreateProductA()
38         {
39             return new Product1();
40         }
41 
42     }
43 
44     //抽象工产品  主要是实现某产品 如何生产
45     abstract class AbsProductA
46     {
47         public abstract void  ProductA();
48         public abstract void ProductB();
49     }
50     //抽象工产品  主要是实现如何生产
51     abstract class AbsProductB
52     {
53         public abstract void ProductA();
54         public abstract void ProductB();
55     }
56 
57     //具体实现如何生产产品
58     class Product1:AbsProductA
59     {
60         public override void  ProductA()
61         {
62             Console.WriteLine("AbsProductA生产了产品A");
63         }
64         public override void ProductB()
65         {
66             Console.WriteLine("AbsProductA生产产品B");
67         }
68     }
69 
70     //具体实现如何生产产品
71     class Product2: AbsProductB
72     {
73         public override void ProductA()
74         {
75             Console.WriteLine("AbsProductB生产了产品A");
76         }
77         public override void ProductB()
78         {
79             Console.WriteLine("AbsProductB生产了产品B");
80         }
81     }
82 
83     class Client
84     {
85         public AbsProductA absProductA;
86         public AbsProductB absProductB;
87         public Client( Abstractfactory factory)
88         {
89             absProductA = factory.CreateProductA();
90             absProductB = factory.CreateProductB();
91         }
92 
93         public void Run()
94         {
95             absProductA.ProductA();
96         }
97     }

 

posted @ 2014-11-25 23:42  落日云烟  阅读(115)  评论(0)    收藏  举报