2014年12月24日

学习笔记——迭代器模式Iterator

摘要: 迭代器模式,使用很多,但是很少实现。常用的集合都支持迭代器。集合中的CreateIterator()可用于创建自己的迭代器,在里面通过调用迭代器的构造函数Iterator(Aggregate)来绑定自己到迭代器中,如果不使用此方法,也可以在场景中直接new Iterator(Aggregate)来得... 阅读全文

posted @ 2014-12-24 09:05 阿呜的边城 阅读(118) 评论(0) 推荐(0) 编辑

学习笔记——责任链模式ChainOfResponsibility

摘要: 责任链模式,主要是通过自己记录一个后继者来判断当前的处理情况。Handler中,再增加一个方法用于设置后继对象,如SetHandler(Handler obj)。然后Handler类以其子类的处理方法Handler()通过判断后继对象是否存在来操作:1.没有设置后继对象,自己处理事件2.有后继对象,... 阅读全文

posted @ 2014-12-24 08:52 阿呜的边城 阅读(107) 评论(0) 推荐(0) 编辑

2014年12月23日

学习笔记——访问者模式Visitor

摘要: 访问者模式,通过Visitor的注入,为Element扩展了方法实现。虽然避免了Element不用修改即可修改,但却破坏了类的封装性,同时,一旦变更就需要增加子类,在子类方法中调用基类方法,然后再使用Visitor的方法来扩展。个人理解,Visitor有点类似于策略模式中的算法,都是通过组合的方法变... 阅读全文

posted @ 2014-12-23 17:19 阿呜的边城 阅读(95) 评论(0) 推荐(0) 编辑

学习笔记——命令模式Command

摘要: 命令模式,将具体操作Receiver封在Command中,调用类只需要知道Command即可。 阅读全文

posted @ 2014-12-23 15:30 阿呜的边城 阅读(107) 评论(0) 推荐(0) 编辑

学习笔记——中介者模式Mediator

摘要: 中介者模式,A与B之间存在调用对方操作的行为,通过中介者模式,可以去除双方的强引用。如图,A可以通过代理Mediator的方法来调用B的方法,而不需要保存B的引用。 阅读全文

posted @ 2014-12-23 15:08 阿呜的边城 阅读(113) 评论(0) 推荐(0) 编辑

学习笔记——备忘录模式Memento

摘要: 备忘录模式,可以将当前状态保存,并随时恢复。Originator存在状态state,当需要保存此状态时,通过CreateMemento创建一个备忘录对象Memento保存此状态;而需要恢复相应状态时,使用RestoreMemento(memento)将相应的状态恢复回来。 阅读全文

posted @ 2014-12-23 14:49 阿呜的边城 阅读(108) 评论(0) 推荐(0) 编辑

学习笔记——观察者模式Observer

摘要: 观察者模式,当事件发生时,调用相应观察者的方法进行“通知”。Subject中使用一个数据结构存储需要通知的观察者对象,执行Notify时,执行所有观察者的Update方法。 阅读全文

posted @ 2014-12-23 14:31 阿呜的边城 阅读(103) 评论(0) 推荐(0) 编辑

学习笔记——状态模式State

摘要: 状态模式,主要是用于存在大量case判断的操作执行,同时这些case依赖于对象的状态,那么就可以将大量的case判断封装为独立的类。Context:-state,当前状态对象。ChangeState(state),切换state对象。OperationInterface(),调用State->Ope... 阅读全文

posted @ 2014-12-23 09:53 阿呜的边城 阅读(161) 评论(0) 推荐(0) 编辑

学习笔记——策略模式Strategy

摘要: 策略模式,与模板模式一样,都是为了将接口和算法实现解耦,但策略模式更主要是整体算法的替换,而模板模式主要是流程一致,部分算法的替换。个人理解为,一般算法替换,使用策略模式,当算法流程一致,可以提取为模板模式。实际中,策略模式,使用组合方式,将算法实现脱离上下文,上下文可以依据需要,使用不同的算法实现... 阅读全文

posted @ 2014-12-23 09:10 阿呜的边城 阅读(111) 评论(0) 推荐(0) 编辑

2014年12月22日

学习笔记——模板模式Template

摘要: 模板模式,主要是利用多态来实现具体算法和父类逻辑的松耦合。父类中TemplateMethod内部定义了相应的算法操作顺序,子类负责实现相应的具体实现。举例:项目中曾遇到过一个需求,叫做高级价格体系。它对外的调用接口一致,只是在不同的应用场景下(比如普通消费和会员卡消费)计算方法有差异,简化计算流程:... 阅读全文

posted @ 2014-12-22 17:16 阿呜的边城 阅读(105) 评论(0) 推荐(0) 编辑

导航