设计模式
liliugen
这个作者很懒,什么都没留下…
展开
-
设计模式学习笔记(八)—Template Method模式
factory模式(包括简单工厂和抽象工厂),Strategy模式,Template method模式是学习Spring框架必不可少的。 《设计模式》一书对Template Method模式是这样描述的: 定义一个操作中算法的骨架,而将一些步骤延迟到子类中。不改变算法的结构而重新定义它的步骤。 我的理解:定义一个抽象类或者说接口,在它的内部定义一些抽象的方法(供TemplateMethod调用的步...原创 2008-11-12 15:03:04 · 70 阅读 · 0 评论 -
设计模式学习笔记(十二)—Builder建造者模式
Builder模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。刚接触到这个模式的时候,实在搞不明白它的意思,有什么用。于是,上网google了一圈,终于得到这个大家普遍认可的解释:建造模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们,用户不知道内部的具体构建细节。下面举一个例子来说明这个模式的使用,代码如下:impo...原创 2008-11-13 10:25:47 · 97 阅读 · 0 评论 -
研磨设计模式之工厂方法模式-1(来自chjavach)
做Java一晃就十年了,最近手痒痒,也决定跟随一下潮流,整个博客,写点东西,就算对自己的知识进行一个梳理和总结,也跟朋友们交流交流,希望能坚持下去。 先写写设计模式方面的内容吧,就是GoF的23个模式,先从大家最熟悉的工厂方法模式开始,这个最简单,明白的人多,看看是否能写出点跟别人不一样的东西,欢迎大家来热烈讨论,提出建议或意见,并进行批评指正,一概虚心接受,在此先谢过了! ...原创 2010-09-08 10:20:01 · 73 阅读 · 0 评论 -
研磨设计模式之工厂方法模式-2
[size=medium] 2 解决方案[/size] 2.1 工厂方法模式来解决 用来解决上述问题的一个合理的解决方案就是工厂方法模式。那么什么是工厂方法模式呢? (1)工厂方法模式定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到其子类。 (2)应用工厂方法模式来解决的思路 ...原创 2010-09-08 10:30:07 · 68 阅读 · 0 评论 -
研磨设计模式之工厂方法模式-3
3 模式讲解 3.1 认识工厂方法模式 (1)模式的功能 工厂方法的主要功能是让父类在不知道具体实现的情况下,完成自身的功能调用,而具体的实现延迟到子类来实现。 这样在设计的时候,不用去考虑具体的实现,需要某个对象,把它通过工厂方法返回就好了,在使用这些对象实现功能的时候还是通过接口来操作,这非常类似于IoC/DI的思想,这个在后面给大家稍详细点介绍一下...原创 2010-09-10 17:28:50 · 68 阅读 · 0 评论 -
研磨设计模式之工厂方法模式-4
3.2 工厂方法模式与IoC/DI IoC——Inversion of Control 控制反转 DI——Dependency Injection 依赖注入 1:如何理解IoC/DI 要想理解上面两个概念,就必须搞清楚如下的问题: •参与者都有谁? •依赖:谁依赖于谁?为什么需要依赖? •注入:谁注入于谁?到底...原创 2010-09-13 14:17:00 · 82 阅读 · 0 评论 -
研磨设计模式之工厂方法模式-5
3.3 平行的类层次结构 (1)什么是平行的类层次结构呢? 简单点说,假如有两个类层次结构,其中一个类层次中的每个类在另一个类层次中都有一个对应的类的结构,就被称为平行的类层次结构。 举个例子来说,硬盘对象有很多种,如分成台式机硬盘和笔记本硬盘,在台式机硬盘的具体实现上面,又有希捷、西数等不同品牌的实现,同样在笔记本硬盘上,也有希捷、日立、IBM等不同品牌的...原创 2010-09-13 14:33:24 · 61 阅读 · 0 评论 -
研磨设计模式之命令模式-1
命令模式也是开发中常见的一个模式,也不是太难,比较简单,下面来详细的写一下命令模式。 [size=xx-large] 命令模式(Command)[/size]1 1. 场景问题 1.1 如何开机 估计有些朋友看到这个标题会非常奇怪,电脑装配好了,如何开机?不就是...原创 2010-09-14 09:29:46 · 72 阅读 · 0 评论 -
研磨设计模式之抽象工厂模式-1
抽象工厂模式(Abstract Factory) 1.1 场景问题 1.1.1 选择组装电脑的配件 举个生活中常见的例子——组装电脑,我们在组装电脑的时候,通常需要选择一系列的配件,比如:CPU、硬盘、内存、主板、电源、机箱等等。为了使讨论简单点,只考虑选择CPU和主板的问题。 事实上,我们在选择CPU的时候,面临一系列的问题,比如:品牌、型号、针脚数目...原创 2010-10-28 13:46:02 · 91 阅读 · 0 评论 -
设计模式学习笔记(十一)—Prototype原型模式
Prototype模式的意图是: 通过给出一个原型对象来指明所要创建的对象类型,然后用复制这个原型对象的办法创建出更多的同类型对象。 在java的类库中已经实现了这一模式,只要你定义的类实现了Cloneable接口,用这个类所创建的对象可以做为原型对象进而克隆出更多的同类型的对象。下面举个例子,来介绍简单的介绍一下它的使用。import java.io.ByteArrayInputStream;i...原创 2008-11-13 10:12:29 · 61 阅读 · 0 评论 -
设计模式学习笔记(七)—Observer观察者模式
《设计模式》一书对Observer是这样描述的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。举个例子,在现实生活中,父母与孩子是最亲密的人。父母做为孩子(被观察者)的监护人(观察者),当孩子和别人打架后,一定会告诉他的父母这件事(呵呵,当孩子很小时,通常会告诉父母,长大了以后,可能不会,这里的孩子指的是小孩子),当孩子获得奖学金后,也一定...原创 2008-11-13 09:47:53 · 102 阅读 · 0 评论 -
设计模式学习笔记(九)—Singleton模式
《设计模式》一书对Singleton模式是这样描述的:保证一个类只有一个实例,并提供一个访问它的全局访问点。这个模式比较简单,下面给出一个例子:public class Singleton { private static Singleton instance; private Singleton(){ } public static Singleton getInstance(){...原创 2008-11-12 15:22:16 · 61 阅读 · 0 评论 -
设计模式学习笔记(十)—Factory Method模式
《设计模式》一书对Factory Method模式是这样描述的: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。 我的理解:FatoryMethod模式是一种创建型模式,定义一个用于创建对象的接口的意思是说,我们要定义一个用于创建对象的接口(或者说抽象类,实际上就是个抽象工厂abstractFactory),它的内部有...原创 2008-11-12 15:25:04 · 63 阅读 · 0 评论 -
设计模式学习笔记(一)--Facade外观模式
GOF《设计模式》一书对Facade模式是这样描述的: 为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。 大致意思是说:使用一种比原有方式更简单的办法与系统交互。例如,我们把一个很文件的文件,放在了第二抽屉里,而第二个抽屉的钥匙放在了第一个抽屉里,我们要想取出这个文件,第一步肯定要拿到第一个抽屉的钥匙,然后打开它再...原创 2008-11-12 15:48:44 · 54 阅读 · 0 评论 -
设计模式学习笔记(二)—-Adapter适配器模式
GOF《设计模式》一书对Adapter模式是这样描述的: 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作。 这段话大致是说:我们需要一种方式,为一个功能正确但接口不合的对象创建一个新接口。例如,客户给我们如下需求: 1) 为都有“显示”(display)行为的点、线、正方形分别创建类。 2) 客户对象不必知道自己到底拥有...原创 2008-11-12 15:50:09 · 83 阅读 · 0 评论 -
设计模式学习笔记(三)—-Strategy策略模式
GOF《设计模式》一书对Strategy模式是这样描述的: 定义一系列的算法,把他们一个个封装起来,并且使它们可相互替换。Strategy模式使算法可独立于使用它的客户而变化。 Strategy模式以下列几条原则为基础: 1) 每个对象都是一个具有职责的个体。 2) 这些职责不同的具体实现是通过多态的使用来完成的。 3) 概念上相同的算法具有多个不同的实现,需要进行管理。 下面我将...原创 2008-11-12 16:17:05 · 115 阅读 · 0 评论 -
设计模式学习笔记(四)—Bridge桥接模式
《设计模式》一书对Bridge是这样描述的: 将抽象与其实现解耦,使它们都可以独立地变化。 大致意思是说:将一组实现与另一组使用他们的对象分离。这里的实现指的是抽象类及其 派生类用来实现自己的对象(而不是抽象类的派生类,这些派生类被称为具体类)。下面 是《Design Patterns Explained》书中的例子。其结构图如下: 下面是它的实现: abstract class S...原创 2008-11-12 16:40:05 · 85 阅读 · 0 评论 -
设计模式学习笔记(五)—Abstract Factory抽象工厂模式
GOF《设计模式》一书对Abstract Factory模式是这样描述的: 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。 大致意思是说:我们在创建这些对象的时候,并不需要指定它们的具体类,这些具体类的对象是由工厂对象负责实例化的。下面是《Design Patterns Explained》一书的例子,有关计算机系统的显示和打印程序,用来显示和打印的分辨率取决于当...原创 2008-11-12 16:47:57 · 68 阅读 · 0 评论 -
设计模式学习笔记(六)—Decorator装饰模式
《设计模式》一书对Decorator是这样描述的: 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式比生成子类更为灵活。也就是说:动态地给对象添加一些额外的功能。它的工作原理是:创建一个始于Decorator对象(负责新功能的对象)终止于原对象的一个对象的“链”。例如,我们要为超市的收银台设计一个打印票据的程序,有的需要打印票据的头信息,有的需要打印票据的页脚信息,有的只...原创 2008-11-12 17:04:56 · 75 阅读 · 0 评论 -
对于单例模式的一点想法
单例模式很普遍,对于Spring的实现机制不清楚,单就Java语言上的实现机制来讨论。 虽然简单,但要获得一个高性能且线程安全的单例确不简单。 最简单的、成熟的单例实现有如下两种: 1. [code="java"]public static final Singleton INSTANCE=new Singleton(); [/code] 即在声明静态变量时就实例化。这种方...原创 2011-03-04 11:12:11 · 58 阅读 · 0 评论