随笔分类 -  i:Design Pattern

摘要:github地址: "https://github.com/cheesezh/python_design_patterns" 简单工厂模式 v.s. 工厂方法模式 以简单计算器为例,对比一下简单工厂模式和工厂方法模式的区别。 简单工厂模式 input a number:99 input a oper 阅读全文
posted @ 2018-07-30 21:37 ZH奶酪 阅读(413) 评论(0) 推荐(0)
摘要:github地址: "https://github.com/cheesezh/python_design_patterns" 题目1 Boy追求Girl,给Girl送鲜花,送巧克力,送洋娃娃。 曼曼, 送你洋娃娃 曼曼, 送你巧克力 曼曼, 送你鲜花 题目2 假设Boy并不认识Girl,Boy希望让 阅读全文
posted @ 2018-07-29 08:25 ZH奶酪 阅读(285) 评论(0) 推荐(0)
摘要:github地址: "https://github.com/cheesezh/python_design_patterns" 题目 设计一个控制台程序,可以给人搭配嘻哈风格(T恤,垮裤,运动鞋)或白领风格(西装,领带,皮鞋)的衣服并展示,类似QQ秀那样的。 基础版本 客户端代码 第一种装扮 T恤 垮 阅读全文
posted @ 2018-07-26 21:37 ZH奶酪 阅读(771) 评论(0) 推荐(0)
摘要:github地址: "https://github.com/cheesezh/python_design_patterns" 单一职责原则 就一个类而言,应该仅有一个引起它变化的原因。 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这 阅读全文
posted @ 2018-07-26 21:35 ZH奶酪 阅读(519) 评论(0) 推荐(0)
摘要:github地址: "https://github.com/cheesezh/python_design_patterns" 题目 设计一个控制台程序, 模拟商场收银软件,根据客户购买商品的单价和数量,计算总价。 基础版本 输入商品单价:40 输入商品数量:9 当前总价: 360.00 点评 上述程 阅读全文
posted @ 2018-07-25 22:05 ZH奶酪 阅读(1636) 评论(0) 推荐(0)
摘要:github地址: "https://github.com/cheesezh/python_design_patterns" 写在前面的话 题目 用一种面向对象语言实现一个计算器控制台程序, 要求输入两个数和运算符号(+ /), 得到结果. 基础版本 input a number:16 input 阅读全文
posted @ 2018-07-24 22:52 ZH奶酪 阅读(633) 评论(0) 推荐(0)
摘要:昨天面试的时候,面试官让我用C++或Java实现一个单例模式。 因为设计模式是在12年的时候学习过这门课,而且当时觉得这门课很有意思,所以就把课本读了几遍,所以印象比较深刻,但是因为实际编程中很少注意使用,所以没能编码实现。 这是之前用C#写的一个单例模式的文章:http://www.cnblogs 阅读全文
posted @ 2016-03-11 10:15 ZH奶酪 阅读(8989) 评论(0) 推荐(0)
摘要:1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace State 7 { 8 class Work 9 { 10 private State state; 11 public Work() 12 { 13 this.state = new ForenoonState(); 14 } 15 16 ... 阅读全文
posted @ 2012-05-21 21:45 ZH奶酪 阅读(283) 评论(0) 推荐(0)
摘要:1 /* 2 * Window系统可能会异常终止,设计一个系统备份程序。类WindowsSystem是 3 * 发起人角色(Orignation),类Memento是备忘录角色(Memento),类User是 4 * 备忘录管理角色(Caretaker)。应用备忘录模式,用C#控制台应用程序实现 5 * 该设计。 6 */ 7 using System; 8 using System.Collections.Generic; 9 using System.Linq;10 using System.Text;11 12 namespace Memento13 {14 //Or... 阅读全文
posted @ 2012-05-19 00:06 ZH奶酪 阅读(435) 评论(0) 推荐(0)
摘要:1 /* 2 * 网上商店中如果商品(product)在名称(name)、价格(price)等 3 * 方面有变化,系统能自动通知会员,将是网上商店区别传统商店的一 4 * 大特色。应用外观模式,用C#控制台应用程序改进设计。 5 */ 6 using System; 7 using System.Collections.Generic; 8 using System.Linq; 9 using System.Text;10 11 namespace Observer12 {13 //观察者-会员类14 class Vip15 {16 priv... 阅读全文
posted @ 2012-05-18 22:37 ZH奶酪 阅读(531) 评论(0) 推荐(0)
摘要:1 /* 2 * 一个保安系统的,由录像机、电灯、红外线监控和警报器组成。保安系统的操作 3 * 人员需要经常将这些仪器启动和关闭。保安类需要用到所有的录像机(Camera)、 4 * 电灯(Light)、感应器(Sensor)和警报器(Alarm)对象,保安觉得使用不方便。应 5 * 用外观模式,用C#控制台应用程序改进该设计。 6 */ 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using System.Text; 11 12 namespace F... 阅读全文
posted @ 2012-05-18 22:35 ZH奶酪 阅读(727) 评论(0) 推荐(0)
摘要:最开始接触“面向对象程序设计”这个词是在大一下学期学习C++的时候,因为有C语言的基础,学起C++来并没有觉得很吃力,在那时候的我看来,C++和C语言的区别就是语法上有些差异,而“面向对象”和“面向过程”的区别,我没有看的很清晰,不管写什么程序,都觉得既可以用C语言写,又可以用C++写。 后来大二下学期的时候,学习了一下MFC,也拿着一本《VisualC++面向对象程序设计》学习了学习,知道了一些基本的控件和函数的使用方法,也开发过几个小程序,在做课程设计的时候也使用的MFC,做过一些程序之后,觉得面向对象仅此而已,并没有什么实际的意义,通过学习MFC,反而体会到了应用程序框架的优势,在别人已 阅读全文
posted @ 2012-05-17 18:50 ZH奶酪 阅读(266) 评论(0) 推荐(0)
摘要://注意职责链模式和状态模式的区别。状态模式的逻辑顺序不一定是线性的。(每个状态中只需判断即可)职责链模式的逻辑顺序是线性的。(每个Handler要设置Prior) 1 /* 2 * 高校学生请假需要符合学校规定,假如班主任可以批准1天假,系主任可以批 3 * 准7天假,各学院院长可以批准30天,学校校长可以批准1年。应用职责链模 4 * 式,用C#控制台应用程序实现该设计。 5 */ 6 using System; 7 using System.Collections.Generic; 8 using System.Linq; 9 using System.Text... 阅读全文
posted @ 2012-05-17 12:56 ZH奶酪 阅读(360) 评论(0) 推荐(0)
摘要:1 /* 2 *“喜羊羊逃命”游戏:喜羊羊被灰太狼追,喜羊羊最多5条命,灰太狼每咬到喜羊羊一 3 * 次,喜羊羊就要少一条命。在逃的过程中喜羊羊可以吃到三种苹果,吃“红苹果”可 4 * 以给喜羊羊加上保护罩,吃“绿苹果”可以加快喜羊羊奔跑速度,吃“黄苹果”可以 5 * 使喜羊羊趟着水跑。应用装饰模式,用C#控制台应用程序实现该设计。 6 */ 7 using System; 8 using System.Collections.Generic; 9 using System.Linq;10 using System.Text;11 12 namespace Decorator13 ... 阅读全文
posted @ 2012-05-16 23:45 ZH奶酪 阅读(842) 评论(0) 推荐(0)
摘要:1 /* 2 * 一个咖啡店可以提供大杯(JorumCoffee)、中杯(MediumCoffee)、小杯(SmallCoffee)的咖 3 * 啡(Coffee),为了满足不同用户的口味,在咖啡中可以添加牛奶(Milk),或者糖(Sugar), 4 * 或者柠檬(Lemon),提供给用户不同口味的组合,如大杯咖啡加牛奶,中杯咖啡加糖,小 5 * 杯咖啡加柠檬,小杯咖啡加糖等。应用桥接模式,用C#控制台应用程序实现该设计。 6 */ 7 using System; 8 using System.Collections.Generic; 9 using System... 阅读全文
posted @ 2012-05-16 23:37 ZH奶酪 阅读(531) 评论(0) 推荐(0)
摘要:1 /* 2 * 在图书销售时,根据不同类型的图书有不同的折扣,计算金额时必须区别对待, 3 * 例如计算机类图书7折,英语类图书6折。应用策略模式,用C#控制台应用程序 4 * 实现该设计。 5 */ 6 using System; 7 using System.Collections.Generic; 8 using System.Linq; 9 using System.Text;10 11 namespace Strategy12 {13 abstract class Strategy14 {15 public abstract double ... 阅读全文
posted @ 2012-05-16 23:37 ZH奶酪 阅读(585) 评论(0) 推荐(0)
摘要:1 /* 2 * 一个软件团队开发绘图系统,设计了圆对象(Circle)、矩形对象(Rectangle),线对象(Line) 3 * 都支持Draw()函数,即可以通过Draw()函数绘制图形。为了加快项目进度,将角度对象(Angle) 4 * 绘制功能交给了合作团队实现。但合作团队将角度对象绘制函数定为了DrawAngle()。 5 * 绘图系统提供给用户后,用户不满意,希望能统一的调用,不用记太多命令。 6 * 应用适配器模式,用C#控制台应用程序完善该设计。 7 */ 8 using System; 9 using System.Collections.Generic;10 ... 阅读全文
posted @ 2012-05-15 22:21 ZH奶酪 阅读(524) 评论(0) 推荐(0)
摘要:1 /* 2 * 建造者模式是一种创建型模式,它主要是应对项目中一些复杂对象的创建工作。 3 * 所谓“复杂对象”,是指此对象中还含有其它的子对象。 4 * 我们现在定义一个场景:汽车生产必须包含车轮(Wheel)、油箱(OilBox)和车身(Body), 5 * 应用建造者模式,用C#控制台应用程序实现该设计,构建BMW品牌和BenZ品牌汽车生产。 6 */ 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using System.Text; 11 12 n... 阅读全文
posted @ 2012-05-14 22:56 ZH奶酪 阅读(523) 评论(0) 推荐(0)
摘要:麦当劳(McDonalds)和肯德基(KFC)快餐店都经营汉堡(Hamburg)和可乐(Cola),用C#控制台应用程序实现这两个快餐店经营产品的抽象工厂模式。 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace AbstractFactory 7 { 8 //汉堡接口 9 interface IHamburg10 {11 }12 //KFC汉堡13 class KFCHamburg... 阅读全文
posted @ 2012-05-14 21:55 ZH奶酪 阅读(675) 评论(0) 推荐(0)
摘要:有一个OEM制造商代理做HP笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单Acer,Lenovo,Dell,该OEM商发现,如果一次同时做很多个牌子的本本,有些不利于管理。利用工厂模式改善设计,用C#控制台应用程序实现该OEM制造商的工厂模式。 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Factory 7 { 8 class Laptop 9 {10 }11 cl... 阅读全文
posted @ 2012-05-14 21:53 ZH奶酪 阅读(633) 评论(0) 推荐(0)