设计模式
lenhan12345
这个作者很懒,什么都没留下…
展开
-
《设计模式精解》学习笔记(一)—— 面向对象基础
设计模式精解》学习笔记(一)——面向对象基础 第一章面向对象范式 面向对象(以后简称:OO)对于我来说既熟悉又陌生。熟悉:因为OO的特性就那么几点—封装、继承、多态,这些东西对于我来说不仅能背诵出相对较为贴切的概念,而且还能举出恰当的例子。陌生:我真正理解OO的实质和精髓了么??? 一、OO范式之前:功能分解 OO之前,拿到一个问题,我们会将一个问题分解成转载 2006-12-22 15:25:00 · 631 阅读 · 0 评论 -
《设计模式精解》学习笔记(十四)------Template Method(模板方法)模式
《设计模式精解》学习笔记(十四)------Template Method(模板方法)模式 GOF:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可以重定义该算法的某些特定步骤。 继承是OO思想的三大特性(封装、继承、多态)之一。继承是为了更好的代码重用,但是在今天,越来越多的OO方法学大师都不止在一处的总结出转载 2006-12-22 15:44:00 · 452 阅读 · 0 评论 -
《设计模式精解》学习笔记(十五)------FactoryMethod(工厂方法)模式
《设计模式精解》学习笔记(十五)------FactoryMethod(工厂方法)模式 GOF:定义一个用于创建对象接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。 FactoryMethod模式应该和Abstract Factory模式一起学习的,为了遵循《设计模式精解》一书的顺序放到了这里。同Abstract Factory模式一样Fac原创 2006-12-22 15:45:00 · 599 阅读 · 0 评论 -
设计模式----Composite(组合)模式
设计模式----Composite(组合)模式 GoF:将对象组合合成树形结构以表示“部分--整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。 组合体内这些对象都有共同接口,当组合体一个对象的方法被调用执行时,Composite将遍历(Iterator)整个树形结构,寻找同样包含这个方法的对象并实现调用执行。可以用牵一动百来形容。 Comp转载 2006-12-22 15:49:00 · 719 阅读 · 0 评论 -
设计模式----Proxy(代理)模式
设计模式----Proxy(代理)模式 GOF:为其他对象提供一种代理以控制对这个对象的访问。 和Flyweight不一样Proxy本身就是代理的意思。对一个对象进行访问控制的原因是,当我们确实需要这个对象,或者这个对象的某些功能后才去使用它。在一个论坛系统中(比如说非常著名的“天涯社区”)来说,浏览该论坛的有两种基本用户,一种是注册用户:可以发表文章,修改自己发表的文章,删除转载 2006-12-22 15:51:00 · 593 阅读 · 0 评论 -
设计模式----Iterator(迭代器)模式
设计模式----Iterator(迭代器)模式 GoF:提供一种方法顺序访问一个局和对象中各个元素,而又不需要暴露该对象的内部表示。 我们在学习数据结构的时候,在实现链表(list)时都会提供各种遍历链表的方法。对于一个聚合对象,比如说Java中ArrayList也应该提供一种方法来让别人可以访问他的元素,而又不暴露他的内部结构。此外,针对不同的需要,可能要以不同的方式遍历这个转载 2006-12-22 15:55:00 · 569 阅读 · 0 评论 -
设计模式----设计模式总结(完)
设计模式----设计模式总结(完) 从《设计模式精解》的学习开始到Visitor模式的学习结束,我的设计模式的学习历程就结束了,这段历程持续了好几个月简直就是蜗牛在爬J。设计模式就好像张无忌的“九阳神功”一样,威力是十分强大的。他将面向对象的概念和特征表现得凌厉尽致。对程序员的“内功修为”是大有益处的,正像专家们说的那样,学习设计模式绝对不是在浪费你的时间。这一点我深有体会。 我的转载 2006-12-22 15:59:00 · 750 阅读 · 0 评论 -
《设计模式精解》学习笔记(六)—— 面向对象的新视角
《设计模式精解》学习笔记(六)—— 面向对象的新视角 通过前面的学习,从新的角度对OO概念有了进一步的认识。设计者如何看待对象、封装和抽象类这三个概念是非常重要的。传统的方法有太多的局限性。本节让我们从新的角度:概念视角、规格视角和实现视角来对OO概念做一点总结。 第八章:扩展我们的视野一、对象:原来的观点和新的观点1. 传统的对象观点:它们是伴随有方法的数据。2. 新转载 2006-12-22 15:34:00 · 529 阅读 · 0 评论 -
《设计模式精解》学习笔记(八)------Abstract Factory(抽象工厂)模式
《设计模式精解》学习笔记(八)------Abstract Factory(抽象工厂)模式 GoF:Abstract Factory模式的意图是“提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类”。 工厂模式有: 抽象工厂(Abstract Factory)、工厂方法(Factory Method)。依照《设计模式精解》的顺序,这里先学习Abstract Fa转载 2006-12-22 15:37:00 · 743 阅读 · 0 评论 -
《设计模式精解》学习笔记(十三)------Observer(观察者)模式
《设计模式精解》学习笔记(十三)------Observer(观察者)模式 GoF:Observer模式的意图是“定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新”。 举个例子:一般在炒股票的时候人们总是紧盯着大盘的起伏涨跌。根据某支股票的涨跌来决定买进或抛出。而在整个交易中紧盯着大盘的这个人就是一个观察着。他将观察的结果通知他转载 2006-12-22 15:43:00 · 580 阅读 · 0 评论 -
设计模式----Prototype(原形)模式
设计模式----Prototype(原形)模式 GoF:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 用过Java集合比如说,ArrayList、HashMap等的人都肯定有过将一个对象copy给另一个对象的经历,其中clone ()方法可能都用过。Prototype模式就起到这样的作用。Prototype模式允许一个对象再创建另一个对象,而根本无需知道任何转载 2006-12-22 15:48:00 · 732 阅读 · 0 评论 -
设计模式----Flyweight(享元)模式
设计模式----Flyweight(享元)模式 GOF:运用共享技术有效地支持大量细粒度的对象。 解释一下概念:也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。比如说(这里引用GOF书中的例子)一个文本系统,每个字母定一个对象,那么大小写字母一共就是52个,那么就要定义52个对象。如果有一个1M的文本,那么字母是何其的多,如果每个字母都转载 2006-12-22 15:50:00 · 511 阅读 · 0 评论 -
设计模式----Command(命令)模式
设计模式----Command(命令)模式 GoF:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数华;对请求排队或记录请求日志,以及支持克撤销的操作。 在网上查找Command模式的相关资料,大多都是关于用户界面的。可能和GOF的先入为主有关系。在GoF的书中,四位作者举了个文本编辑器的例子。Command模式通过将请求本身变成一个对象来使工具箱对象可向未指定的转载 2006-12-22 15:53:00 · 630 阅读 · 0 评论 -
设计模式----Interpreter(解释器)模式
设计模式----Interpreter(解释器)模式 GOF:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 现在的大大小小(以应用面的宽广来说)编程语言不下几百种。Interpreter模式描述了一个语言解释器是如何构成的,在实际应用中我们可能很少去构造一个语言的文法。因为现有的也学不好啊。考虑再三,我觉定不深入研究了。以后有转载 2006-12-22 15:54:00 · 762 阅读 · 0 评论 -
《设计模式精解》学习笔记(十一)------Decorator(装饰)模式
《设计模式精解》学习笔记(十一)------Decorator(装饰)模式GoF:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator(装饰)模式相比生成子类更为灵活。在系统开发的过程中,我们希望给某个对象而不是整个类添加一些功能。例如:我们要做一扇门,现在为了能将门做的美观和安全需要给门加上锁和把手,还可能给门加上窗户和雕花。这里我们把这些要添加的东西叫做门的属性。转载 2006-12-22 15:40:00 · 587 阅读 · 0 评论 -
《设计模式精解》学习笔记(十)------Strategy(策略)模式
《设计模式精解》学习笔记(十)------Strategy(策略)模式 GoF:定义一系列的算法,把他们一个一个封装起来,并且使他们可相互替换。本模式使得算法可独立于使用它的客户而变化。 比如说在我们的系统中需要对一个图形或一个艺术字上色(这样的系统在现实中是有的,我呆的前一家公司做的一个票据输出系统就有这样的功能)。假如我们需要各种颜色的图形或艺术字,那么我们将每一种颜色的图转载 2006-12-22 15:39:00 · 545 阅读 · 0 评论 -
《设计模式精解》学习笔记(五)------Adapter(适配器)模式
《设计模式精解》学习笔记(五)------Adapter(适配器)模式 一、简介 Adapter(适配器)模式在有的文章中也叫包装器模式。 GoF:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 这句话的意思可以精转载 2006-12-22 15:32:00 · 502 阅读 · 0 评论 -
《设计模式精解》学习笔记(七)------Bridge(桥)模式
《设计模式精解》学习笔记(七)------Bridge(桥)模式 GoF:将抽象部分与它的实现部分分离,使它们都可以独立地变化。解释一下GoF的定义:就是指将抽象部分和实现部分分开,让它们各自随意增加减少。而不受其它约束。 下面引自《Thinking in Patterns with Java》:Bridge模式实际上就是一个组织代码的工具,它使得你可以添加任意数量的新转载 2006-12-22 15:35:00 · 576 阅读 · 0 评论 -
《设计模式精解》学习笔记(九)——阶段小结
《设计模式精解》学习笔记(九)——阶段小结 按照《设计模式精解》的顺序,书到这里作者做了个阶段性的总结。作者单独列出一篇,分三章总结并讲述了设计模式的选择和运用,虽然到目前为止书上才讲了四个模式,但是作者通过前面的实际例子分析了各模式之间的关系,和在实际中怎样去选择和运用设计模式。我想这样的方法也适用以后的学习和运用。 作者通过实际例子详细分析了各个模式的特点和在运用时的优略。作者转载 2006-12-22 15:38:00 · 504 阅读 · 0 评论 -
《设计模式精解》学习笔记(十二)------Singleton(单件)模式
《设计模式精解》学习笔记(十二)------Singleton(单件)模式 GoF:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 Singleton模式是比较简单的。 由于性能的原因,我可能不希望反复地实例化这些对象,然后又将它们销毁。而且,尽管我可以再开始时实例化所有可能的策略对象,但如果策略的数量变得越来越大,这种方法也就越来越低。相反,最好的方法是在需要时进转载 2006-12-22 15:42:00 · 643 阅读 · 0 评论 -
《设计模式精解》学习笔记(十六)------总结
《设计模式精解》学习笔记(十六)------总结 到这里《设计模式精解》基本上是看完了,后面的几个章节作者并没有再介绍其他模式,而是总结了一些运用模式的方法和注意事项,并对全书作了总结。很遗憾的是,作者并没有将GOF所总结的23个设计模式全部介绍完。但作者在本书中的贡献是引导读者怎样去学习设计模式,在每个模式中作者反复强调了两点:l 优先使用对象组合而不是继承;转载 2006-12-22 15:46:00 · 483 阅读 · 0 评论 -
设计模式----Builder(生成器)模式
设计模式----Builder(生成器)模式 GoF:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 Builder模式与Absrtact Factory模式非常像。GoF指出,他们二者的主要区别就在于Builder模式遵循一定的步骤一步一步创建对象。 Builder模式是为了将构建复杂对象的过程和他的部件相分离。因为一个复杂的对象不但有很多大量转载 2006-12-22 15:47:00 · 686 阅读 · 0 评论 -
设计模式----Chain of Responsibility(职责链)模式
设计模式----Chain of Responsibility(职责链)模式 GOF:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 Chain of Responsibility(职责链)模式其实也挺简单的。通俗的来说就是当一个请求发到我这里,我能处理就给处理,不能处理就推给其他人去处转载 2006-12-22 15:53:00 · 584 阅读 · 0 评论 -
设计模式----Mediator(中介者)模式
设计模式----Mediator(中介者)模式 GoF:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地互相引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。 OOD鼓励奖行为封装到各个对象中,也就是将变化点封装。但是有时候这种封装可能会导致对象间有许多连接。极端情况下,每个对象都知道其他所有对象。各个对象之间的交互比较多,每个对象的行为操作都依赖其他对象。转载 2006-12-22 15:57:00 · 704 阅读 · 0 评论 -
设计模式----Memento(备忘录)模式
设计模式----Memento(备忘录)模式 GoF:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 Memento模式是用一个Memento对象来存储另外一个对象的内部状态(前提条件是不破坏封装),将一个对象的状态捕捉住,并外部化存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常转载 2006-12-22 15:58:00 · 876 阅读 · 0 评论 -
写在前面
太多的人都在关注设计模式,这也引起了我的极大好奇。其实早在一年前我就开始学习设计模式了,看的书就是那本GoF(四人团)的非常著名的《设计模式:可复用面向对象软件的基础》,当时只有一点C++的基础,没有什么实践经验。说实在的这本书对我来说确实很难看懂(相信对很多没有什么项目经验的新手来说都是这样),于是看了些就扔到一边了。 直到最近从书店买了一般《设计模式精解》,这本书讲解的相当浅显转载 2006-12-22 15:22:00 · 559 阅读 · 0 评论 -
设计模式-----Adapter(适配器)模式
Adapter(适配器)模式 意图:Adapter模式使得因为接口不兼容而不能在一起工作的类可以一起工作。 假如有这样的情况我们需要设计一组几何形状(line, square, circle)来画出它们的形状和颜色。我们定义了一个抽象类shape,其中定义了display() 和 setColour()两个虚函数用来画出特定的几何形状和给该几何形状设置颜色。 例如:转载 2006-12-22 15:23:00 · 562 阅读 · 0 评论 -
《设计模式精解》学习笔记(二)------传统OO设计的局限性
《设计模式精解》学习笔记(二)------传统OO设计的局限性 第三章一个急需灵活代码的问题 什么是专家系统: 专家系统是一个特殊的计算机系统,他使用人类专家的规则自动做出决策。创建专家系统包括两个步骤。首先,获取专家用于做出决策、完成任务的规则,并将这些规则建模。第二,在计算机中实现这些规则;这个步骤通常会用到一些商用专家系统工具。对于分析者来说,第一个步骤地任务困难的多。转载 2006-12-22 15:27:00 · 501 阅读 · 0 评论 -
《设计模式精解》学习笔记(三)------设计模式开始
《设计模式精解》学习笔记(三)------设计模式开始 看到“设计模式”这个词是在三四年前了,当时突然发现这个词到处都是。但我一点都不理解,只是看了个大概概念和一些零星的介绍,给我的感觉是这项技术很牛。一个偶然的机会我在学校的一个书摊一角上见到了那本传说中的《设计模式—可复用面向对象软件的基础》,而且老板还是半价出售。于是当即打算买下来回去看看,和老板讲了价钱最后15元搞定。当时我连C++转载 2006-12-22 15:28:00 · 569 阅读 · 0 评论 -
《设计模式精解》学习笔记(四)——Facade(外观)模式
《设计模式精解》学习笔记(四)——Facade(外观)模式 一、简介 Façade(外观)模式(有些人又称:门面模式)。 GoF:为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 二、学习Façade(外观)模式 GoF定义中的“子系统”是指:在你的系统中为了转载 2006-12-22 15:30:00 · 559 阅读 · 0 评论 -
设计模式----State(状态)模式
设计模式----State(状态)模式 GoF:允许一个对象在其内部状态改变时,改变他的行为。对象看起来似乎修改了它的类。 在实际的程序开发中,我们经常会用到大量的if elseif else对某种状态进行切换,特别是用惯了结构化语言(C语言)的人。如果状态切换的情况反复出现,我们就可以考虑到采用State模式来代替程序中大量的if elseif else了。在大多数情况下,如果对转载 2006-12-22 15:58:00 · 839 阅读 · 0 评论