• 简单工厂模式(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,就先到此吧!
     

  • 相关阅读:
    自己做的板子,电脑识别不出下载口(micro-usb),程序无法烧入
    博客园首页添加访问量
    python-day5爬虫基础之正则表达式2
    altium designer 画板 电子元器件的名称不能集体修改
    python-day4爬虫基础之正则表达式
    python-day3爬虫基础之下载网页
    python-day2爬虫基础之爬虫基本架构
    关于电脑识别不出自己画的板子上的USB接口问题
    python-day1 爬虫基础之HTTP基本原理
    PAT A1019 General Palindromic Number (20 分)——回文,进制转换
  • 原文地址:https://www.cnblogs.com/Jonish/p/3186050.html
Copyright © 2020-2023  润新知