简单工厂模式(Simple Factory Pattern)
前述:这里主要是记录下自己学习设计模式的过程,把学到的模式做个笔记,方便以后查阅、进一步学习;同时也希望对其他人有点帮助。
第一个学习到的是:简单工厂模式
1、定义:由一个工厂对象决定创造哪一种产品类的实例
2、优缺点:
优点:将实例化具体对象的操作从客户端抽离出来,实现很好的分离,各司其职。
缺点:当需求变动,需要增加新的产品类时,需要找回工厂类,在工厂类中增加新产品的实例化操作,违背了“开放-关闭”原则,即:对扩展开放,对修改关闭,在工厂方法模式中能够解决此不足之处。
3、应用场景:主要应用在实现简单的实例化对象操作的情况下。
4、Demo:
CashFactory类:工厂类
1 /// <summary>
2 /// 简单工厂类,负责实例化具体对像的过程
3 /// </summary>
4 public class CashFactory
5 {
6 public CashSuper CreateCash(string type)
7 {
8 CashSuper cs=null;
9 switch (type)
10 {
11 case "Normal":
12 cs =new CashNormal();
13 break;
14 case "Rate":
15 cs= new CashRate();
16 break;
17 }
18 return cs;
19 }
20 }
CashSupre类:抽象产品类
1 /// <summary>
2 /// 抽象基类,定义所有派生类支持的属性或行为;
3 /// </summary>
4 public abstract class CashSuper
5 {
6 public abstract void GetResult();
7 }
CashNormal类:具体产品类Normal
1 /// <summary>
2 /// 具体类Normal,继承至基类CashSuper,封装具体的属性或行为;
3 /// </summary>
4 public class CashNormal : CashSuper
5 {
6 public override void GetResult()
7 {
8 Console.WriteLine("CashNormal");
9 }
10 }
CashRate类:具体产品类Rate
1 /// <summary>
2 /// 具体类CashRate,继承至基类CashSuper,封装具体的属性或行为;
3 /// </summary>
4 public class CashRate : CashSuper
5 {
6 public override void GetResult()
7 {
8 Console.WriteLine("CashRate");
9 }
10 }
Client类:
1 namespace SimpleFactory
2 {
3 class Program
4 {
5 static void Main(string[] args)
6 {
7 //使用简单工厂根据客户端的条件创造一个具体的对象;
8 CashFactory factory = new CashFactory();
9 CashSuper cs = factory.CreateCash("Normal");
10 cs.GetResult();
11 Console.ReadLine();
12 }
13 }
14 }
ok,就先到此吧!