简单工厂模式与工厂模式
工厂:
抽象工厂类
具体工厂类
抽象产品类
具体产品类
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}
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}
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 }
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 }