• 设计模式-简单工厂模式


    前言

    点击查看设计模式系列

    设计模式的23种中,并没有简单工厂模式,然而大家都有写简单工厂模式,写他的真实目的在于循序渐进理解后续的工厂模式,工厂方法,抽象工厂,也就是对工厂这个名词做个理解。

    简单工厂模式

    简单工厂模式就是通过提供的数据,进入工厂类决策出,具体实例化那个类,在实例化的类中进行程序操作,然后返回可能被实例化类的公共基类,从基类中获取你想要的结果。

    举例:如今看病,犹如部件在工厂加工,怎么说呢?打个比方,你去看男科,然而医院有好多课室,你现在进医院之后会迎面走来1个护士,先检测你是男的女的或是什么情况,然后再带你去属于你的科室。

    分析:这个迎面走来的这个护士:就是你首先选择科室的决策者,因为他从你的描述中知道你的一些秘密,作为工厂方法。然而各个可是都属于不同的对象等待你的到来,给你看病。各个科室的基类是医院。等你看完病后,这个医院会给你一个诊断治疗的说法。

    基类代码:

         //医院
         public class Room
        {
             //男科护士,妇科忽视说的内容
             protected string boyRoomSay, grilRoomSay;
    
             //返回男科忽视说的话
             public string getBoyRoom()
             {
                 return boyRoomSay;
             }
    
             //返回妇科护士说的话
             public string getGrilRoom()
             {
                 return grilRoomSay;
             }
        }

    子类代码:根据自身的特性,会让不同的护士给你一种合理的说法

        //男科
         public class boyRoom : Room
         {
             public boyRoom(string sex)
             {
                 if (sex == "")
                 {
                     boyRoomSay = "欢迎进入男课室";
                     grilRoomSay = "呵呵,你不能来妇科看的。";
                 }
                 else
                 {
                     boyRoomSay = "请问您是男是女!";
                     grilRoomSay = "请问您是男是女!";
                 }
             }
         }
         //妇科
         public class grilRoom : Room
         {
             public grilRoom(string sex)
             {
                 if (sex == "")
                 {
                     grilRoomSay = "欢迎进入妇课";
                     boyRoomSay = "呵呵,你不能来男科看的。";
                 }
                 else
                 {
                     boyRoomSay = "请问您是男是女!";
                     grilRoomSay = "请问您是男是女!";
                 }
             }
         }

    工厂:给你决策去哪里的小护士

         //构建工厂
         public class RoomFactory
         {
             public RoomFactory() { }
             //工厂中的决策者,给我一个参数,我说给你那个实例
             public Room getRoom(string sex)
             {
                 if (sex=="")
                 {
                     return new boyRoom(sex);
                 }
                 else
                 {
                     return new grilRoom(sex);
                 }
             }
    
         }

    运行:

     public static void Main(string[] args)
            {
                Console.WriteLine("请问您性别是:");
    //获取你输入的性别
    string str = Console.ReadLine(); RoomFactory fac = new RoomFactory(); Room rom = fac.getRoom(str); Console.WriteLine("男科护士:" + rom.getBoyRoom()); Console.WriteLine("妇科护士:" + rom.getGrilRoom()); Console.ReadLine(); }

    结果:

    简单工厂的基本原理:创建工厂,他根据数据,返回众多可返回实例中的一个实例,然后在不用知道实例化的是那个子类的情况下,调用返回类的实例方法。

    设计模式系列

    欢迎加入左上方群,进行讨论学习

  • 相关阅读:
    python 全栈开发,Day13(迭代器,生成器)
    python 全栈开发,Day12(函数的有用信息,带参数的装饰器,多个装饰器装饰一个函数)
    python 全栈开发,Day11(函数名应用,闭包,装饰器初识,带参数以及带返回值的装饰器)
    关于1024:堆栈下溢的错误(1024. Stack Underflow Occurred)
    Quick 3.3 final 加载ccs的变化
    Quick 3.3 的代码资源加密
    quick code ide设置分辨率
    quick3.3rc1导入工程到ADT
    lua 基本语法
    as3 阻止后续侦听器
  • 原文地址:https://www.cnblogs.com/knowledgesea/p/3915460.html
Copyright © 2020-2023  润新知