随笔分类 -  020.设计模式

适配器模式Adapter、外观模式Facade-- 学习HeadFirst设计模式记录
摘要:适配器模式:将一个类的接口,转换成客户期望的另一个接口,适配器让原本不兼容的类可以合作无间。外观模式 :提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。设计原则:最少知识原则:只和你的密友交谈。同得墨忒耳律。具体可如下描述: 类C的方法f应该只调用以下... 阅读全文

posted @ 2015-07-12 22:59 Waaaaaall-E 阅读(159) 评论(0) 推荐(0)

复合模式Compound -- 学习HeadFirst设计模式记录
摘要:复合模式:结合两个或以上的模式,组成一个解决方案,解决一再发生的一般性问题。 典型应用:MVC模式,M:Model, V:View, C:Controller。类似的还有Web:浏览器/服务器模型。 阅读全文

posted @ 2015-07-12 22:25 Waaaaaall-E 阅读(183) 评论(0) 推荐(0)

代理模式Proxy-- 学习HeadFirst设计模式记录
摘要:模版方法模式:为另一个对象提供一个替身或占位符以控制对这个对象的访问。 远程代理:管理客户和远程对象之间的交互。 虚拟代理:控制访问实例化开销大的对象。 保护代理:基于调用者控制对对象方法的访问。 缓存代理:为开销大的运算结果提供暂时存储。 同步代理:在多线程的情况下,为主题提供安全的访问。 写入时复制代理:用来控制对象的复制,方法是延迟对象的复制,直到客户真的需要为止。 ... 阅读全文

posted @ 2015-07-11 21:57 Waaaaaall-E 阅读(176) 评论(0) 推荐(0)

模版方法模式Template Mothod -- 学习HeadFirst设计模式记录
摘要:模版方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。这个模式主要用来创建一个算法的模版。好莱坞原则:别调用(打电话)我们,我们会调用(打电话)你;应用案例:数组排序算法 void sort(Object[] ... 阅读全文

posted @ 2015-07-11 14:08 Waaaaaall-E 阅读(186) 评论(0) 推荐(0)

策略模式 Strategy -- 学习HeadFirst设计模式记录
摘要:策略模式:定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。将算法族从对象中独立出来,然后在对象中通过组合的方式,定义算法对象,再委托该对象处理算法。单一原则:封装变化; 多用组合,少用继承; 针对接口编程,不针对实现编程... 阅读全文

posted @ 2015-07-06 22:51 Waaaaaall-E 阅读(147) 评论(0) 推荐(0)

状态模式 State -- 学习HeadFirst设计模式记录
摘要:状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。面向过程方法:针对动作,在处理时switch/if-else各个状态,然后分别处理:#includeclassGumballMachine{public:GumballMachine(){_count=100;_state=... 阅读全文

posted @ 2015-07-05 23:25 Waaaaaall-E 阅读(218) 评论(0) 推荐(0)

迭代器模式 Iterator,组合模式 Composite -- 学习HeadFirst设计模式记录
摘要:迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。组合模式 :允许你将对象组合成树形结构来表现"整体/部分"层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。单一原则:一个类应该只有一个引起变化的原因。迭代器模式示例代码:#include#include/... 阅读全文

posted @ 2015-06-28 14:36 Waaaaaall-E 阅读(253) 评论(0) 推荐(0)

命令模式 Command – 学习HeadFirst设计模式记录
摘要:命令模式:将"请求"分装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。命令模式的核心是实现Command基类。将控制各个家电的控制类,都继承自Command类,并实现execute方法。然后,遥控器上的各个按钮就可以通过多态,使用Command类型的指针调用e... 阅读全文

posted @ 2015-06-08 22:49 Waaaaaall-E 阅读(168) 评论(0) 推荐(0)

单例模式Singleton – 学习HeadFirst设计模式记录
摘要:单件模式:确保一个类只有一个实例,并提供一个全局访问点。1、单例模式实现#include#include#include/*单件模式:确保一个类只有一个实例,并提供一个全局访问点。*/classSingleton{public:staticSingleton*GetInstance()/*单例全局访... 阅读全文

posted @ 2015-06-06 17:34 Waaaaaall-E 阅读(135) 评论(0) 推荐(0)

工厂模式Factory – 学习HeadFirst设计模式记录
摘要:简单工厂模式Factory Patten:将创建对象的代码放到一个单独的工厂类中管理。也有人说,简单工厂模式不是一个设计模式,反而比较像是一种编程习惯。工厂方法模式:定义了一个创建对象的接口,但由子类决定实例化的类是哪一个。工厂方法让类把实例化推迟到子类。抽象工厂模式:提供一个接口,用于创建相关或依... 阅读全文

posted @ 2015-06-06 10:01 Waaaaaall-E 阅读(175) 评论(0) 推荐(0)

装饰者模式Decorator – 学习HeadFirst设计模式记录
摘要:装饰者模式: 动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 装饰者和被装饰者有相同的超类型。 装饰者可以在所委托被装饰者的行为之前或之后,加上自己的行为,以达到特定的目的。 OO原则:多用组合,少用继承。1、装饰者和被装饰者共同的基类/*Beverage... 阅读全文

posted @ 2015-06-05 13:57 Waaaaaall-E 阅读(139) 评论(0) 推荐(0)

观察者模式 Observer – 学习HeadFirst设计模式记录
摘要:1、HeadFirst上的标准实现,属于教学版。2、参考Java内置实现,感觉更实用些。1、HeadFirst上的标准实现,属于教学版。接口声明:/*说明:报纸出版社+订阅者=观察者模式定义:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。设计原则:... 阅读全文

posted @ 2015-05-25 23:12 Waaaaaall-E 阅读(183) 评论(0) 推荐(0)

导航