码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式-简单工厂模式

时间:2014-08-15 19:33:09      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   数据   ar   2014   div   

前言

点击查看设计模式系列

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

结果:

bubuko.com,布布扣

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

 

设计模式系列

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

设计模式-简单工厂模式,布布扣,bubuko.com

设计模式-简单工厂模式

标签:style   blog   http   color   数据   ar   2014   div   

原文地址:http://www.cnblogs.com/knowledgesea/p/3915460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!