逗B少年搞程序03 简单工厂模式——模式来源于生活而高于生活
2014-04-22 21:29
417 查看
终于是到了传说中的大话设计模式的学习了,很早之前就听米老师说过这个是提高班唯一指定学习的书,师傅也是跟我提过一次,然后我就顺手下了本电子书。那个时候看着真是毛都不懂啊,虽然是中国字,但是放在一起就是不知道那是个什么意思。
上周的时候抽空看了几页,每天保证英语的情况下,看了自考,再看计算机的时间就少了,以后不能让自考等级考试什么的影响正常的学习生活,不然整个节奏都乱了。
该进入正题了。
说到这个设计模式,偶然的情况下看到了CSDN的博客推荐邮件,我想大家应该收到了。里面是用游戏中的一些场景分析各个设计模式的应用。从第一篇的星际争霸分析抽象工厂模式,到最新的欢迎界面分析模板方法模式,每一篇我都看了一遍,虽然只看懂了工厂模式和策略模式。
不管了,起码先看一遍,等到自己学的时候再看一遍,印象就更加深刻了。
既然有人开了个头,那我就放心大胆的写代码了。
大牛们研究设计模式是为了应对生活中的各种情况,那么我们是不是应该从生活中学习设计模式呢?联系到生活我就来劲了,这两天又看了一边简单工厂模式的例子,仔细捉摸了一遍,写了几个模仿的例子,终于是有了一点点的理解。
首先是工厂类的理解。之前的面向过程的编程中,我们习惯了把大段的判断代码,显示代码,还有其他的什么什么代码写到窗体类中。这样看上去很美,但是违反了单一职责原则,一个既要显示显示窗体,又要判断输入的字符,万一出了一点错误都不知道是哪出错了,进行修改也会很麻烦,专业点说就是耦合性高了。
所以这个工厂类只是抽象出来的一个判断类,用来判断到底要实例化哪一个具体的子类。
诶,这几好办了嘛~作为一个作死专业户第一个就想到了dota上边,兵营生产近战兵,远程兵,在拆了对面的相同路兵营之后还能生产超级兵。恩,果断写了个简单兵营模式。。。咳咳,这下理解起来就容易多了。
我就说过我写了好几个例子,就怕没人信,这回不写dota,放出一个简单饭店模式。
首先是定义了菜这个类,去饭店是干嘛的是吧,总得吃点菜啊,硬是要吃馒头咸菜的少年出门左拐不送。这个菜分凉菜热菜,再往下还能分,这次就先到这了。
客户点好了菜,告诉厨师,厨师根据客户的要求,去做凉菜还是热菜。
貌似还需要写点什么话作总结,反正我的思路一直都是强行和生活联系的,理解起来自认为还是够快的,有时学什么原理性的知识不能很好地找到生活中的原型,就学的一塌糊涂,比如微机原理、计算机组成原理、编译原理。。。看来还是要加强修行啊。
以上
上周的时候抽空看了几页,每天保证英语的情况下,看了自考,再看计算机的时间就少了,以后不能让自考等级考试什么的影响正常的学习生活,不然整个节奏都乱了。
该进入正题了。
说到这个设计模式,偶然的情况下看到了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读取输入的数据,失误了。。。下次在写博客的时候不能偷懒了。。。
貌似还需要写点什么话作总结,反正我的思路一直都是强行和生活联系的,理解起来自认为还是够快的,有时学什么原理性的知识不能很好地找到生活中的原型,就学的一塌糊涂,比如微机原理、计算机组成原理、编译原理。。。看来还是要加强修行啊。
以上
相关文章推荐
- 大话设计模式之策略模式(结合简单工厂),程序完善过程蕴含智慧
- 简单的计算器程序可以用到简单工厂的设计模式
- 李实名的现代生活 之简单工厂模式
- 设计模式之简单工厂模式
- 设计模式案例--工厂模式--简单工厂(静态工厂)(simplefactory)
- 简单工厂模式和策略模式的区别
- C++设计模式之简单工厂模式
- 读书笔记1:简单工厂模式
- 工厂模式简单实现
- 设计模式(九)[简单工厂(Simple Factory)模式]
- 简单有效的工厂模式
- 简单工厂模式
- C#--设计模式之简单工厂模式
- 简单工厂模式
- 设计模式学习(四): 1.简单工厂 (附C#实现)
- 大话设计模式-简单工厂模式
- 《大话设计模式》读书笔记一 简单工厂模式
- JAVA:将反射技术应用于工厂模式(Factory)和单例模式(Singleton)的简单代码
- 设计模式 -- 简单工厂
- 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别