浅墨浓香

想要天亮进城,就得天黑赶路。
随笔 - 743, 文章 - 16, 评论 - 87, 阅读 - 53万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

随笔分类 -  设计模式

摘要:31.3 空对象模式(Null Object Pattern) 31.3.1 定义和类图 (1)定义:通过实现一个默认的无意义对象来避免NULL值出现。简单地说,就是为了避免在程序中出现NULL值判断而诞生的一种常用设计方法。 (2)类图 31.3.2 应用场景 (1)不使用空对象模式的例子 【编程 阅读全文

posted @ 2016-07-22 15:26 浅墨浓香 阅读(357) 评论(0) 推荐(0) 编辑

摘要:31.2 对象池模式 31.2.1 定义和类图 (1)定义:对象池是一种设计模式,它通过管理有限对象复用来共享某些稀少或必须付出昂贵代价的资源。 (2)类图: 31.2.2 对象池的扩展接口 (1)两级对象池方式:空闲对象池和已用对象池 (2)利用Wrapper模式包装复用对象,使附加一些属性(如空 阅读全文

posted @ 2016-07-22 11:44 浅墨浓香 阅读(378) 评论(0) 推荐(0) 编辑

摘要:31.1 规格模式(Specification Pattern) 31.1.1 查询筛选条件 (1)场景:根据条件从数据库的用户表中筛选出对象 (2)存在问题 ①findUserByAgeThan和findUserByName两个方法中除了if后面的判断条件不同,其他地方完全一样 ②这两个程序中唯一 阅读全文

posted @ 2016-07-21 22:21 浅墨浓香 阅读(400) 评论(0) 推荐(0) 编辑

摘要:30.3 事件触发器的开发(观察者模式+中介者模式) 30.3.1 场景介绍 (1)有一产品它有多个触发事件(如创建事件、修改、删除),如创建文本框时触发OnCreate事件,修改时触发onChange事件,双击时触发onDblClick事件。 (2)当产品触发事件时,会创建相应的产品事件对象(Pr 阅读全文

posted @ 2016-07-20 23:22 浅墨浓香 阅读(259) 评论(0) 推荐(0) 编辑

摘要:30.2 迷你版交易系统(工厂模式+策略模式) 30.2.1 IC卡的两种金额 (1)固定金额:指员工不能提现的金额,这部分金额只能用来特定消费,即员工日常必需的消费,如食堂内吃饭、理发、健身等活动。 (2)自由金额:可以提现,也可以用于消费, 30.2.2 扣款策略(假设卡内有充足的余额) (1) 阅读全文

posted @ 2016-07-19 09:59 浅墨浓香 阅读(325) 评论(0) 推荐(0) 编辑

摘要:30.1 命令链模式(命令模式+责任链模式) 30.1.1 UNIX下的命令规则(如ls) (1)命令名为小写字母 (2)命令名、选项、操作数之间以空格分隔,空格数量不受限制 (3)选项之间可以组合使用,也可以单独拆分使用 (4)选项以“-”开头 30.1.2 ls命令详解(如ls -a -l /u 阅读全文

posted @ 2016-07-16 21:17 浅墨浓香 阅读(394) 评论(0) 推荐(0) 编辑

摘要:29.1 策略模式 VS 桥梁模式 29.1.1 策略模式 【编程实验】用策略模式实现邮件发送 (1)有文本和超文本两种格式的邮件,将这两种格式封装成两种不同的发送策略。 (2)文本邮件和超文本邮件分别是两种不同格式的邮件的封装。MailServer是一个环境角色,它接收一个MailTemplate 阅读全文

posted @ 2016-07-11 10:52 浅墨浓香 阅读(230) 评论(0) 推荐(0) 编辑

摘要:27.1 策略模式 VS 命令模式 27.1.1 策略模式实现压缩算法 //行为型模式大PK——策略模式和命令模式 //实例:用策略模式实现压缩算法 #include <iostream> #include <string> using namespace std; //抽象压缩算法 class A 阅读全文

posted @ 2016-07-10 11:07 浅墨浓香 阅读(297) 评论(0) 推荐(0) 编辑

摘要:27.1 代理模式 VS 装饰模式 27.1.1 代理模式 (1)场景:客人找运动员代理要求安排运动员参加比赛 (2)说明:代理人有控制权,可以拒绝客人的要求,也可以答应安排,甚至自己下去跑(因为有些运动员本身就作自己的代理) 【编程实验】找代理安排运动员比赛 //结构型模式大PK——代理模式和装饰 阅读全文

posted @ 2016-07-09 15:08 浅墨浓香 阅读(241) 评论(0) 推荐(0) 编辑

摘要:26.1 工厂方法模式 VS 建造者模式 26.1.1 按工厂方法建造超人 (1)产品:两类超人,成年超人和未成年超人。 (2)工厂:这里选择简单工厂 【编程实验】工厂方法建造超人 26.1.2 按建造者模式建造超人 (1)产品的三大组成部分:躯体、特殊技能、身份标记 (2)建造者:Builder。 阅读全文

posted @ 2016-07-09 09:22 浅墨浓香 阅读(387) 评论(1) 推荐(1) 编辑

摘要:1. 访问者模式(Visitor Pattern)的定义 (1)定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 ①模式是要解决当为对象添加新的操作和功能时候,如何尽可能不修改对象的类的一种方法。一般为对象添加功能,是需要向对象添加成员 阅读全文

posted @ 2016-07-07 10:02 浅墨浓香 阅读(463) 评论(0) 推荐(0) 编辑

摘要:1. 模板方法模式(Template Method Pattern)的定义 (1)定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 (2)模板方法模式的结构和说明 ①AbstractClass:抽象类。用于定义算法骨 阅读全文

posted @ 2016-07-04 23:28 浅墨浓香 阅读(835) 评论(0) 推荐(0) 编辑

摘要:1. 策略模式(Strategy Pattern)的定义 (1)定义:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 ①算法是同一接口的不同实现,地位是平等的,可以相互替换。 ②引入上下文对象,可以实现让算法能独立使用它的客户。因为这个对象负 阅读全文

posted @ 2016-07-04 10:14 浅墨浓香 阅读(473) 评论(0) 推荐(0) 编辑

摘要:1. 状态模式(State Pattern)的定义 (1)定义:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 ①状态和行为,它们的关系可以描述为“状态决定行为” ②因状态是在运行期被改变,行为也会在运行期根据状态的改变而改变。看起来,同一个对象,在不同的运行时刻,行为是不 阅读全文

posted @ 2016-07-03 13:30 浅墨浓香 阅读(1365) 评论(0) 推荐(0) 编辑

摘要:1. 观察者模式(Observer Pattern)的定义 (1)定义:定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 (2)观察者模式的结构和说明(拉模型) ①Subject:目标对象,通常具如的功能:一个目标可以被多个观察者观察;目标提供 阅读全文

posted @ 2016-06-30 12:30 浅墨浓香 阅读(479) 评论(0) 推荐(0) 编辑

摘要:1. 备忘录模式(Memento Pattern)的定义 (1)定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 ①不破坏封装性:对象不能暴露它不应该暴露的细节。 ②捕获对象的内部状态:保存状态的目的是为了恢复,把以将某个对 阅读全文

posted @ 2016-06-28 12:17 浅墨浓香 阅读(377) 评论(0) 推荐(0) 编辑

摘要:1. 中介者模式(Mediator Pattern)的定义 (1)定义:用一个中介对象来封装一系统对象交互。中介者使得各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 ①中介者模式主要用来将同事类之间网状结构变为星状结构,使同事类之间的关系变的清晰一些。 ②所有对象只 阅读全文

posted @ 2016-06-26 23:02 浅墨浓香 阅读(1145) 评论(0) 推荐(0) 编辑

摘要:1. 迭代器模式(Iterator Pattern)的定义 (1)定义:提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。 ①迭代器迭代的是具体的聚合对象(如数组和链表等),它围绕的是“访问”做文章。 ②可用不同的遍历策略来遍历聚合,比如是否需要过滤 ③为不同聚合结构提供 阅读全文

posted @ 2016-06-18 21:40 浅墨浓香 阅读(490) 评论(0) 推荐(0) 编辑

摘要:1. 解释器模式(Interpreter Pattern)的定义 (1)定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 ①文法:即语法规则。在解释器模式中每一个语法都将对应一个解释器对象,用来处理相应的语法规则。它对于扩展、改变文法以及增加新的 阅读全文

posted @ 2016-06-17 21:11 浅墨浓香 阅读(7427) 评论(0) 推荐(1) 编辑

摘要:1. 命令模式(Command Pattern)的定义 (1)定义 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 ①封装请求:抽象出需要执行的动作,封装成对象(有统一的接口)。 ②参数化:可以用不同的命令对象,去参数化配置客户的请 阅读全文

posted @ 2016-06-12 22:15 浅墨浓香 阅读(1310) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示