大话设计模式
进击的横打
此人不懒,但也什么都没有写
展开
-
第二章 商品促销-策略模式(读书笔记)
第二章 商品促销-策略模式(读书笔记) 1.面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。2.打一折和九折只是形式的不同,抽象分析出来,所有的打折算法都是一样的。所有每一种打折建一个类是非常不合适的。3.简单工厂模式只是解决对象的创建问题,如果在商品促销系统中,经常性地改打折额度和返利额度,每次维护或扩展收费方式都要原创 2012-01-31 14:15:00 · 1623 阅读 · 0 评论 -
第十九章分公司=一部门--组合模式(读书笔记)
第十九章分公司=一部门--组合模式19.1 分公司不就是一部门吗?例如卖电脑的商家,可以卖单独配件也可以卖组装整机,又如复制文件,可以一个一个文件复制粘贴还可以整个文件夹进行复制,再比如文本编辑,可以给单个字加粗,变色,改字体,当然也可以给整段文字做同样的操作。分公司或办事处与总公司的关系,也是部分和整体的关系。人力资源部,财务部的管理功能可以复用于分公司。这其实就是整体与部分可以被一致对原创 2012-10-14 21:07:47 · 793 阅读 · 0 评论 -
第十八章 如果再回到从前-备忘录模式(读书笔记)
第十八章 如果再回到从前-备忘录模式18.1 如果再给我一次机会 玩单机游戏的时候,我们都是在打大BOSS之前先保存一个进度,然后如果通关失败了,可以再返回刚才那个进度来从头来过。这里就会引入备忘录模式。18.2 游戏存进度 游戏角色类,用来存储角色的生命力,攻击力,防御力的数据。但是在这个程序中,代码没有错但未必优。GameRole.h#pragma once#inc原创 2012-10-14 20:06:43 · 700 阅读 · 0 评论 -
第二十章想走可以先买票--迭代器模式(读书笔记)
第二十章想走可以先买票--迭代器模式20.1 乘车买票,不管你是谁! 不管你是小偷还是公交公司的人,只要上了这俩车,都要买票。售票员其实做了一件重要的事,就是把车厢里的所有人都遍历了一遍,不放过一个不买票的乘客,这也是一个设计模式的体现。这个设计者模式的名字就叫作迭代器模式。20.2 迭代器模式 提供一种方法顺序访问一个聚合对象中各个元素,而不是暴露该对象的内部表示。就像售票员不管原创 2012-10-20 12:14:19 · 733 阅读 · 0 评论 -
第二十二章 手机软件何时统一--桥接模式(读书笔记)
第22章 手机软件何时统一--桥接模式22.1 凭什么你的游戏我不能玩 其实手机真正的发展也就近十年,此期间各大手机厂商都发展自己的软件部门开发手机软件,哪怕是同一品牌的手机,不同型号的也完全有可能软件不兼容。型号不同,软件还算是基本兼容,可惜不同品牌,软件基本还是不能整合在一起。22.2 紧耦合的程序演化 手机游戏类,M品牌手机游戏和N品牌手机游戏 由于手机都需要通讯录功原创 2012-10-20 18:03:03 · 712 阅读 · 0 评论 -
第二十四章 加薪非要老总批--责任链模式(读书模式)
第24章 加薪非要老总批--责任链模式24.1 老板,我要加薪! 今天小菜向经理提加薪申请,经理没权利,然后向总监上报,总监也没有权利,向总经理上报。其实这个就是一个责任链了。24.2 加薪代码初步#pragma once#include "Request.h"#include class Manager{public: typedef enum _Ty原创 2012-10-20 20:30:30 · 846 阅读 · 0 评论 -
第二十三章烤羊肉串引来的思考--命令模式(读书笔记)
第23章烤羊肉串引来的思考--命令模式23.1 吃烤羊肉串23.2 烧烤摊VS烧烤店 要羊肉做生意的马路游击队,因为要吃烤肉的人太多,大家都希望能最快吃到肉串,而烤肉老板只有一个人,所以有些混乱。买羊肉串的人都盯着烤肉上去了。他们只关心哪一串多,哪一串少,哪一串考得好,这个其实就是行为请求着与行为实现者之间的紧耦合。 对请求排队或记录请求日志,以及支持可撤销的操作等行为时,行为请求原创 2012-10-20 19:24:54 · 936 阅读 · 0 评论 -
第二十五章 世界需要和平--中介者模式(读书笔记)
第25章 世界需要和平--中介者模式25.1 世界需要和平 由于各国之间代表的利益不同,所以矛盾冲突是难免的,但如果有这样一个组织,由各国的代表组成,用来维护国际和平与安全,解决国际间经济,社会,文化和人道主义性质的问题,这样的类似联合国的组织就是一个调停者,中介者模式。 国与国之间的关系,就类似于不同的对象与对象之间的关系,这就要求对象之间需要知道其他所有对象,尽管将一个系统分割成许原创 2012-10-21 15:07:20 · 1086 阅读 · 0 评论 -
第二十六章 项目多也别傻做--享元模式(读书笔记)
第二十六章 项目多也别傻做--享元模式26.1 项目多也别傻做 比如现在的大型的博客网站,电子商务网站,里面每一个博客或商家也可以理解为一个小的网站。利用用户ID号的不同来区分不同的用户,具体数据和模板可以不同,但代码核心和数据库确是共享的。26.2 享元模式 运用共享技术有效地支持大量细粒度的对象。 #pragma once#include #include原创 2012-10-21 16:02:53 · 911 阅读 · 0 评论 -
第二十八章 男人和女人--访问者模式(读书笔记)
第二十八章 男人和女人--访问者模式28.1 男人和女人 男人成功时,背后多半有一个伟大的女人。 女人成功时,背后多半有一个伟大的男人。 男人失败时,闷头喝酒,谁也不用劝。 女人失败时,眼泪汪汪,谁也劝不了。 男人恋爱时,凡是不懂也要装懂。 女人恋爱时,遇事懂也装作不懂。 男女对比这么多的原因就是因为人类在性别上就只有男人和女人两类。28.2 最简单的编程实现原创 2012-10-26 19:14:56 · 849 阅读 · 0 评论 -
第十七章 在看NBA需要翻译--适配器模式(读书笔记)
第十七章 在看NBA需要翻译--适配器模式17.1 在NBA我需要翻译 向姚明这样的在国外打球的运动员来说,如果不懂外语,球技再高,估计也是不可能在国外待很长时间的。这个就可以和适配器模式挂上钩了。17.2 适配器模式(Adapter) 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。简单来说,就是需要的东西就原创 2012-10-08 20:09:02 · 1226 阅读 · 0 评论 -
第十六章 无尽加班何时休--状态模式(读书笔记)
第十六章 无尽加班何时休--状态模式16.1 加班又是加班!上午状态好,中午想睡觉,下午渐恢复,加班苦煎熬。其实是一种状态的变化,在不同的时间,会有不同的状态。这些状态可以用状态模式来实现。16.2 工作状态-函数版 在这个版本中是用面向过程来实现的。代码1:16.3 工作状态-分类版 将工作时间,是否完成工作任务这两个属性进行封装。实现了部分的面向对象。而写程序这个原创 2012-10-08 19:49:23 · 985 阅读 · 0 评论 -
第十五章 就不能不换DB吗--抽象工厂模式(读书笔记)
第十五章 就不能不换DB吗--抽象工厂模式15.1 就不能不换DB吗? Access数据库和SQL Server数据库是完全不一样的数据库,在这两个数据库之间进行切换的时候,菜鸟只会用时间来解决这个问题。而真正精明的做法就是使用工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。使用工厂模式以后就可以达到所谓的业务逻辑与数据访问的解耦。15.2 最基本的数据访问程序原创 2012-10-08 18:34:57 · 817 阅读 · 0 评论 -
第三,四,五,十一章 设计模式和面向对象的各种规则(读书笔记)
第三章 拍摄UFO-单一职责原则1.单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因。2.如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会消弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。3.所谓俄罗斯方块游戏的逻辑,不过就是数组的每一项值变化的问题,下落,旋转,碰撞判断,移动,堆积这些原创 2012-01-31 15:07:37 · 729 阅读 · 0 评论 -
第一章 代码无错就是优?简单工厂模式(读书笔记)
第一章 代码无错就是优?简单工厂模式 1.编程是一门技术,更加是一门艺术。2.传统印刷术其实就是最早的面向对象(可重用)的范例。3.传统印刷术的问题就在于所有的字都刻在同一版面上造成耦合度太高所致,开始用设计模式使得程序更加的灵活。容易修改,并且易于复用。4.计算器的例子中让计算和显示分开,应该就是MVC中的解耦和。5.UML:实现接口用空心三角形+虚线来表示。6.聚合原创 2012-01-31 13:32:04 · 784 阅读 · 0 评论 -
第六章 穿什么有这么重要-装饰模式(读书笔记)
第六章 穿什么有这么重要-装饰模式 1.装饰模式(Decorator):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。2.(图6.4)Component是定义一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责。Decorator:装饰抽象类,继承了Component从外类来扩展原创 2012-01-31 15:24:08 · 873 阅读 · 0 评论 -
第九章 简历复印-原型模式(学习笔记)
简历复印-原型模式1.原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。2.原型模式其实就是从一个对象再创建另外一个可订制的对象。而且不需要知道任何创建的细节。3.一般在初始化的信息不发生变化的情况下,克隆是最好的方法。这既隐藏了对象创建的细节,又对性能是大大的提高。4.原型模式是不用重新初始化对象,而是动态地获得对象运行时的状态。原创 2012-02-26 09:50:47 · 933 阅读 · 0 评论 -
第八章 雷锋依然在人间-工厂方法模式(读书笔记)
雷锋依然在人间-工厂方法模式1.简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。2.工厂方法模式(Factory Method)定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。3.工厂方法模式的好处就是在扩展功能的时候,只要扩展了变化,不用修改现有的类了,也原创 2012-02-26 09:19:18 · 1051 阅读 · 0 评论 -
第七章 为别人做嫁衣-代理模式(读书笔记)
为别人做嫁衣-代理模式1.代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。2.远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不用地址空间的事实。3.虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。打开网页时代理存储了真实图片的路径和尺寸,这个就是虚拟代理。4.安全代理:用来控制真实对象访问时原创 2012-02-22 07:37:51 · 4339 阅读 · 0 评论 -
第十章 考题抄错会做也白搭-模板方法模式(读书笔记)
1.我们既然用了继承,并且肯定这个继承有意义,就应该要成为子类的模板,所有复制的代码都应该要上升到父类去,而不是让每个子类都去重复。2.当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理。3.模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义原创 2012-08-26 10:10:06 · 675 阅读 · 0 评论 -
第十二章 牛市股票还会亏钱-外观模式(读书笔记)
1.由于众多投资者对众多股票的联系太多,反而不利于操作,这在软件中是不是就称为耦合性过高。而有了基金以后,变成众多用户只和基金打交道,关心基金的上涨和下跌就可以了,而实际上的操作却是基金经理人在与上千支股票和其他投资产品打交道。Main函数int _tmain(int argc, _TCHAR* argv[]){ Stock1* gu1 = new Stock1(); Stoc原创 2012-08-26 12:14:52 · 787 阅读 · 0 评论 -
第十四章 老板回来我不知道--观察者模式(读书笔记)
首先我们来看看下面的代码:/*同事的类,在这里他要知道秘书的存在才可以*/#pragma once#include class Secretary;class StockObserver{public: StockObserver(void); StockObserver(std::string name, Secretary* sub); ~Stock原创 2012-08-27 22:12:29 · 1134 阅读 · 0 评论 -
第二十九章 OOTV杯超级模式大赛-模式总结(读书笔记)
第29章OOTV杯超级模式大赛-模式总结29.1 演讲任务 小菜睡眼朦胧,趴到了桌上,打起盹来,不一会儿就进入了梦乡。29.2 报名参赛 工厂模式三姐妹:工厂方法,抽象工厂方法,简单工厂方法。简单工厂方法不符合开放封闭原则。所以在预选赛上被淘汰了。简单工厂模式的缺点就是在对每一次修改的时候都要更改工厂类,这就是对修改开放了。29.3 超模大赛开幕式 开幕式到场来宾:抽象先生原创 2012-12-09 10:54:46 · 1906 阅读 · 0 评论