设计模式-简单工厂模式

前言

点击查看设计模式系列

设计模式的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(); }

结果:

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

 

设计模式系列

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

posted @ 2014-08-15 18:21  张龙豪  阅读(4117)  评论(5编辑  收藏  举报