简单工厂模式与工厂模式

工厂:

抽象工厂类

具体工厂类

抽象产品类

具体产品类

 

 1using System;
 2///抽象产品类
 3public abstract class Product
 4{
 5   public abstract void On();
 6   public abstract void Off();
 7}

 8////产品类
 9public class Product1:Product
10{
11    public override void On()
12    {
13        Console.WriteLine("Product1 On");
14    }

15    public override void Off()
16    {
17        Console.WriteLine("Product1 Off");
18    }

19}

20public class Product2:Product
21{
22    public override void On()
23    {
24        Console.WriteLine("Product2 On");
25    }

26    public override void Off()
27    {
28        Console.WriteLine("Product2 Off");
29    }

30}

31/// <summary>
32/// 工厂方法
33/// </summary>

34public abstract class Creator
35{
36    public abstract Product factory();
37}

38public class Product1Creator : Creator
39{
40    public override Product factory()
41    {
42        return new Product1();
43    }

44}

45public class Product2Creator : Creator
46{
47    public override Product factory()
48    {
49        return new Product2();
50    }

51}

52
53/// <summary>
54/// 客户端调用
55/// </summary>

56public class Client
57{
58    public static void Main()
59    {
60        Creator c1 = new Product1Creator();
61        Creator c2 = new Product2Creator();
62
63        Product p1 = c1.factory();
64        Product p2 = c2.factory();
65
66        p1.On();
67        p1.Off();
68
69        Console.WriteLine("--------------------");
70
71        p2.On();
72        p2.Off();
73    }

74}

 

 

简单工厂只有

 

工厂类

抽象产品类

具体产品类

它在工厂类中会创造不同具体产品的生产方法。

工厂方法会有以下不同

 1public class SimpleFactory
 2{
 3    public Product Create(string ProductType)
 4    {
 5        if (ProductType == "1")
 6            return new Product1();
 7        else if (ProductType == "2")
 8            return new Product2();
 9        else
10            return null;
11
12    }

13}

 

main函数

 

 1    public static void Main()
 2    {
 3        SimpleFactory sf = new SimpleFactory();
 4        Product P = sf.Create("1");
 5        P.On();
 6        P.Off();
 7        Console.WriteLine("-------------------------");
 8        P = sf.Create("2");
 9        P.On();
10        P.Off();
11    }

posted on 2008-10-20 17:40  杨斐  阅读(285)  评论(1编辑  收藏  举报

导航