逗B少年搞程序03 简单工厂模式——模式来源于生活而高于生活

来源:互联网 发布:c语言数组怎么用 编辑:程序博客网 时间:2024/06/04 18:29

   终于是到了传说中的大话设计模式的学习了,很早之前就听米老师说过这个是提高班唯一指定学习的书,师傅也是跟我提过一次,然后我就顺手下了本电子书。那个时候看着真是毛都不懂啊,虽然是中国字,但是放在一起就是不知道那是个什么意思。

   上周的时候抽空看了几页,每天保证英语的情况下,看了自考,再看计算机的时间就少了,以后不能让自考等级考试什么的影响正常的学习生活,不然整个节奏都乱了。

   该进入正题了。

   说到这个设计模式,偶然的情况下看到了CSDN的博客推荐邮件,我想大家应该收到了。里面是用游戏中的一些场景分析各个设计模式的应用。从第一篇的星际争霸分析抽象工厂模式,到最新的欢迎界面分析模板方法模式,每一篇我都看了一遍,虽然只看懂了工厂模式和策略模式。

   不管了,起码先看一遍,等到自己学的时候再看一遍,印象就更加深刻了。

   既然有人开了个头,那我就放心大胆的写代码了。

   大牛们研究设计模式是为了应对生活中的各种情况,那么我们是不是应该从生活中学习设计模式呢?联系到生活我就来劲了,这两天又看了一边简单工厂模式的例子,仔细捉摸了一遍,写了几个模仿的例子,终于是有了一点点的理解。

   首先是工厂类的理解。之前的面向过程的编程中,我们习惯了把大段的判断代码,显示代码,还有其他的什么什么代码写到窗体类中。这样看上去很美,但是违反了单一职责原则,一个既要显示显示窗体,又要判断输入的字符,万一出了一点错误都不知道是哪出错了,进行修改也会很麻烦,专业点说就是耦合性高了。

   所以这个工厂类只是抽象出来的一个判断类,用来判断到底要实例化哪一个具体的子类。

   诶,这几好办了嘛~作为一个作死专业户第一个就想到了dota上边,兵营生产近战兵,远程兵,在拆了对面的相同路兵营之后还能生产超级兵。恩,果断写了个简单兵营模式。。。咳咳,这下理解起来就容易多了。

   我就说过我写了好几个例子,就怕没人信,这回不写dota,放出一个简单饭店模式。

   首先是定义了菜这个类,去饭店是干嘛的是吧,总得吃点菜啊,硬是要吃馒头咸菜的少年出门左拐不送。这个菜分凉菜热菜,再往下还能分,这次就先到这了。

public class 菜{    public virtual string getname()    {        string name = null;        return name;    }}class 热菜 : 菜{    public override string getname()    {        string name="热菜";        return name;    }}class 凉菜 : 菜 {    public override string getname()    {        string name = "凉菜";        return name;    }}

   客户点好了菜,告诉厨师,厨师根据客户的要求,去做凉菜还是热菜。

public class 厨师{    public static 菜 Cook(string name)    {        菜 dish = null;        switch (name)        {            case"热菜":                dish=new 热菜();                break;            case"凉菜":                dish = new 凉菜();                break;        }        return dish;    }}
   再来一个前台,也就是客户端,专门用来接收客户的菜单。

class Program    {        static void Main(string[] args)        {            菜 dish;            dish = 厨师.Cook("热菜");            Console.WriteLine(dish.getname());        }    }
   好吧,这个居然没用ReadLine读取输入的数据,失误了。。。下次在写博客的时候不能偷懒了。。。

   貌似还需要写点什么话作总结,反正我的思路一直都是强行和生活联系的,理解起来自认为还是够快的,有时学什么原理性的知识不能很好地找到生活中的原型,就学的一塌糊涂,比如微机原理、计算机组成原理、编译原理。。。看来还是要加强修行啊。

以上


0 0