
设计模式学习
文章平均质量分 77
NJUTONY
吉林大学09级软件学院南京大学计算机研究生在读
展开
-
Composite——组合模式
一、定义 GOF中对Composite模式这样描述:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。 组合涉及的是一组对象,其中有的对象可能包含有其他的对象,因此,有的对象可能代表一个对象群组,而有的则是单个对象。组合模式包括两个重要的建模概念:1.所设计的群组既要能包含单个个体,又要能包含其他群原创 2013-11-23 13:56:17 · 701 阅读 · 0 评论 -
Iterator ——迭代器模式
一、定义 GOF上对迭代器模式的意图这样描述:提供一种方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。二、场景设计 一个聚合对象,如List,应该提供方法让人来访问他的元素,又不需要暴露它的内部结构。同时,可能会有以不同方式遍历列表的需求。为了不让List接口中充斥着各种不同的遍历操作,迭代器模式可以排得上用场。迭代器模式的关键思想:将对列表原创 2013-12-16 01:45:42 · 1781 阅读 · 0 评论 -
Visitor——访问者模式
一、定义 GOF中,对Visitor模式的意图是这样描述的:表示一个作用于某对象结构中的各元素的操作。它使得你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 从描述来看,访问者模式主要用于扩展现有的类层次结构来实现新的行为。一般的扩展方法是添加新的方法以提供新的行为。但是有时候,新行为可能和现有对象根本就不兼容。还有可能,类层次的开发人员无法预知以后的开原创 2013-12-20 09:26:00 · 1262 阅读 · 0 评论 -
AbstractFactory——抽象工厂
一、定义 GOF里对抽象工厂模式这样定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 有时候,我们希望在为客户代码提供实例化类的同时,能够控制应该对哪个类进行实例化,这种情况下,可以使用工厂模式,如果需要,还可以提供一个方法来利用外部因素确定应该实例化哪个类。但是有时候,这些用于控制对哪个类进行实例化的外部因素往往涉及多个类,这些原创 2014-01-10 15:44:19 · 912 阅读 · 0 评论 -
Builder——生成器模式
一、定义 GOF上对生成器模式的意图如此描述:将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。 具体来说,生成器模式将一个复杂对象的构造逻辑从其代码中分离出来。这种做法在有些情况是很有用的,例如当一个类的规模很大,我们可能希望减少其规模;又如,构造器方法的参数只能逐步获取,我们希望一步一步地构造目标对象,如对象属性需要从XML文件中解析原创 2014-01-10 10:50:28 · 1069 阅读 · 1 评论 -
Bridge——桥接模式
一、定义GOF上对桥接模式的意图描述:将抽象部分与它的实现部分分离,使得它们都可以独立的变化。 其实这么描述比较模糊,要将抽象部分与实现部分分离,直接使用继承:顶层的抽象类定义出各种抽象方法,子类给出抽象方法的不同实现。这样也可以达到抽象的目的。但是这样做将抽象层和实现部分固定在一起,使得难以对抽象部分和实现部分独立地改。 这时,可以利用组合将实现模块和对原创 2013-11-30 02:11:34 · 720 阅读 · 0 评论 -
Factory——工厂方法
一、定义 GOF上对工厂方法的意图如此描述:定义一个用于创建对象的接口,让子类决定实例化哪个类。Factory Method使一个类的实例化延迟到其子类。 作为类的开发者,我们通常会在类中提供构造器方法以便客户代码实例化该类。然而有时候,客户代码并不清楚该对几个类中的哪一类进行实例化。可以用工厂模式定义一个用于创建对象的接口,同时控制对哪个类进行的实例化。原创 2014-01-06 21:27:52 · 877 阅读 · 0 评论 -
Singleton——单例模式
一、定义 在GOF中,对单例模式的意图这样描述:(1)保证一个类仅有一个实例 (2)提供一个访问它的全局访问点。二、场景设计 在有些环境下,我们需要某个类只能有一个实例。例如一颗文件树中的缓存结构,对于系统中的所有文件,只需要一个缓存实例。还有,系统中的回收站,同样也只需要一个实例。原创 2013-12-05 01:40:52 · 666 阅读 · 0 评论 -
Decorator——装饰器模式
一、定义 GOF上对装饰器模式的意图这样描述:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式比生成子类更为灵活。从根本来说,装饰器模式将多态和委托结合在一起,使得我们可以动态地组合对象的行为。二、场景设计 装饰器模式的典型应用是Java里的流设计。在java中,通常每个流对象中包含另一个流对象,一个流对象通常会将自己预先处理过的字原创 2013-12-09 01:08:50 · 887 阅读 · 0 评论 -
利用MVC模式开发Java应用程序
感谢原作者,把MVC的实现讲得这么清晰,原blog地址:点击打开链接利用MVC模式开发Java应用程序本文选自:开放系统世界Java是一种面向对象的语言,是实现面向对象编程的强大工具。我们在实际编程中,应该运用并发挥其最大效能。但是,要利用面向对象编程思想,自己独立开发出好的Java应用程序,特别是大、中型程序,并转载 2013-11-19 00:57:56 · 1294 阅读 · 0 评论 -
桥接模式、适配器模式以及外观模式三者的区别
感谢原作者,这篇博客让我对这三个模式的认识更加深刻了,原链接:Dot Net设计模式—适配器、桥接与外观三模式之间的关系 这几天一直在研究各种各样的设计模式,在学习适配器模式、桥接模式和外观模式模式的时候,发现他们之间存在着一定的关系,实际上模式不适单一存在的,在我们的现实编程生活中往往是几种模式结合使用的。1.适配器模式与桥接模式的区别和联系转载 2013-11-30 11:15:37 · 2729 阅读 · 0 评论 -
Adapter—适配器模式
一、定义 GOF 中对Adapter的描述是这样的:将一个类的接口换成客户希望的另一个接口。Adapter模式使得原来由于接口不兼容而不能在一起工作的那些类可以一起工作。别名又叫包装器(Wrapper)。二、场景设计 适配器思想在生活中随处可见。举个例子,给手机充电,电脑在跟前的时候,我习惯直接用数据线连接手机和电脑的USB接口;若周围没有可供连接的U原创 2013-11-14 16:31:36 · 591 阅读 · 0 评论 -
Observer——观察者模式
一、定义观察者模式在GOF上是这么定义的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种对象间的交互也叫发布-订阅。二、场景设计考虑这样一种应用场景:一组数据实时动态变化,现在要对这组数据进行可视化表示。表示形式可能又很多:柱状图,表格,饼状图等。数据的变化要及时反映在可视化的表示中。这就是典型的发布-订阅场景,各种可视化形原创 2013-11-08 02:10:37 · 777 阅读 · 0 评论