最近开始学习《大话设计模式》,作者以通俗的方式来讲解,还有故事情节,幽默的对白,给人耳目一新的感觉。非常喜欢作者的这种步步深入,循循善诱的方式。学习了就要总结,总结的时候自己也学着作者的方式,以自己生活中的小例子来实现我们的设计模式。下面就开始我们的第一讲《简单工厂和工厂方法》。
前两天带着一个老乡去吃饭,当然,作为一个四川人,去外边吃饭当然是点我们著名的川菜!下面先用简单工厂来...
分类:
其他好文 时间:
2014-06-10 18:09:08
阅读次数:
199
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《.....
分类:
其他好文 时间:
2014-06-10 12:31:12
阅读次数:
220
享元模式:运用共享技术有效的支持大量细粒度的对象。简单描述:1个享元工厂,提供各种类型的享元。如果这些享元存在于工厂对象中,则直接提出给客户端,如果没有,则新建享元并存储起来,同时提供给客户端。享元的外部状态可以由客户端存储并在调用相关需要外部状态的操作时由客户端传入大话设计模式中的截图:代码例子:...
分类:
编程语言 时间:
2014-06-10 11:37:26
阅读次数:
318
中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单描述:1个抽象Colleague,其派生多个具体ConcreteColleague,每个具体ConcreteColleague都认识一个具体中介者。他们发送消...
分类:
编程语言 时间:
2014-06-10 00:55:22
阅读次数:
390
组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。简单描述:1个Composite类,里面持有一个容器成员,容器可以存入自身大话设计模式中的截图:代码例子:AbstractComponent类:
1 package com.longs...
分类:
编程语言 时间:
2014-06-09 16:20:55
阅读次数:
382
迭代器模式:提供一个方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示简单描述:提供一个单独的接口遍历聚集类对象中的成员,以实现聚集对象的隐藏和内部数据供外部访问大话设计模式中的截图:我觉得以上面的图示进行编码会暴露ConcreteAggregate中的内部信息(ConcreteIera...
分类:
编程语言 时间:
2014-06-09 15:28:57
阅读次数:
314
单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。简单描述:构造函数设置为private,以禁止外部类实现本类。本类中提供一个静态方法返回一个本例对象(注意多线程中的实现)大话设计模式中的截图:代码例子:Singleton类:
1 package com.longsheng.singl...
分类:
编程语言 时间:
2014-06-09 15:07:30
阅读次数:
376
合成/聚合复用原则:尽量使用合成/聚合,尽量不要使用类继承。桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立变化。解释:即一个系统可以有多种分类实现,把没种分类独立出来,让他们可以独自变化,减少他们之间的耦合。简单描述:1个Abstraction类,持有一个Implementor的引用,其方...
分类:
编程语言 时间:
2014-06-09 14:04:43
阅读次数:
328
命令模式:将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日记,以及支持可撤销的操作。简单描述:1个Receiver,知道如何执行命令。1个抽象命令,持有一个Receiver的引用,命令的执行则调用Receiver的对应方法(具体命令具体调用相应的方法)。1个I...
分类:
编程语言 时间:
2014-06-09 13:15:24
阅读次数:
363
备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。简单描述:一个Memento类,代表Originator中要备份的属性。Originator负责生成备份和还原备份,CareTaker负责存储备份大话设计模式中的截图:例...
分类:
编程语言 时间:
2014-06-08 19:32:19
阅读次数:
286