简单工厂模式(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     }
Code

CashSupre类:抽象产品类

 

1     /// <summary>
2     /// 抽象基类,定义所有派生类支持的属性或行为;
3     /// </summary>
4     public abstract class CashSuper
5     {
6         public abstract void GetResult();
7     }
Code

 

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     }
Code

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     }
Code

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 }
View Code

 

  ok,就先到此吧!
 

原文地址:https://www.cnblogs.com/Jonish/p/3186050.html