简单工厂模式与工厂模式
工厂:
抽象工厂类
具体工厂类
抽象产品类
具体产品类
1
using System;
2
///抽象产品类
3
public abstract class Product
4
{
5
public abstract void On();
6
public abstract void Off();
7
}
8
////产品类
9
public 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
}
20
public 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>
34
public abstract class Creator
35
{
36
public abstract Product factory();
37
}
38
public class Product1Creator : Creator
39
{
40
public override Product factory()
41
{
42
return new Product1();
43
}
44
}
45
public class Product2Creator : Creator
46
{
47
public override Product factory()
48
{
49
return new Product2();
50
}
51
}
52
53
/// <summary>
54
/// 客户端调用
55
/// </summary>
56
public 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
}
using System;2
///抽象产品类3
public abstract class Product4
{5
public abstract void On();6
public abstract void Off();7
}8
////产品类9
public class Product1:Product10
{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
}20
public class Product2:Product21
{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>34
public abstract class Creator35
{36
public abstract Product factory();37
}38
public class Product1Creator : Creator39
{40
public override Product factory()41
{42
return new Product1();43
}44
}45
public class Product2Creator : Creator46
{47
public override Product factory()48
{49
return new Product2();50
}51
}52

53
/// <summary>54
/// 客户端调用55
/// </summary>56
public class Client57
{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
}
简单工厂只有
工厂类
抽象产品类
具体产品类
它在工厂类中会创造不同具体产品的生产方法。
工厂方法会有以下不同
1
public 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
}
public class SimpleFactory2
{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
else10
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
}
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
}

浙公网安备 33010602011771号