
设计模式
yanyuqiao
啥都木
展开
-
组合(composite)模式
组合模式主要应用在“树形结构”的情况下,如 GUI各控件、目录树等。在有些设计模式的书里把组合模式定义为两种,即安全的组合模式和透明的组合模式。个人感觉只有“透明的组合模式”才是真正的模式,安全的组合模式不能称为模式。对于“安全的组合模式”这里不做讨论,它只是一种普通的面向对象应用而已,没有什么特别之处。上图所示为一个组合模式的框图,在这里最需要注意的一点就是 L原创 2012-08-16 10:19:06 · 515 阅读 · 0 评论 -
Proxy代理模式
代理模式,遇到的比较少,主要用在框架中吧。Java对代理有内置的支持,可以参考 Proxy, InvocationHandler相关类。关于代理如下图所示,和代理相关的具体内容等用到时再仔细研究:代理模式和装饰者模式的结构图非常相似,但它们还是有区别的,在真正使用时一般不会搞混,下面是摘抄的一句话:分清模式的名称没那么重要,只要使用时“应景”就行了。代理原创 2012-08-21 11:33:05 · 652 阅读 · 0 评论 -
decorator装饰者模式
========================================================================================================================================================================================================原创 2012-08-15 09:21:10 · 536 阅读 · 0 评论 -
FlyWeight模式
享元模式说起来简单,但真正理解起来似乎挺难的。关于此模式常举的例子就是:1 文件夹图标 (各个文件夹除了名子位置不同外其它都相同)2 一篇文件中的每个英文字符都可以看成一个类,而实际上我们只需要26个类就行了以上的例子虽口头上容易理解,但不可能应用到真正的代码中。 下面的代码演示了一个文件夹的例子,不过本人还是不太理解此模式真谛。import java.awt.C原创 2012-08-17 23:47:17 · 747 阅读 · 0 评论 -
BridgePattern
Bridge理解的关键即理解所谓的“抽像化”与“实例化”,下面举例子说明:1、 Java的Swing在不同的操作系统下的编程接口是“不变的”即,Swing的编程接口是一种抽像;而具体的图形显示的任务则交给了每种操作系统下相应的低层类,这个低层类是一种具体的实现,Win下有WIn下的实现,Unix下有Unix下的实现。如下图:抽像层的Component通过 Toolkit与实现层的 Co原创 2012-08-17 19:51:00 · 823 阅读 · 0 评论 -
Builder模式
Builder模式使用于:需要构造的对象比较复杂或变化较多,而且可以分成若干步骤的。 一个情景如下:你需要发明一台机器,这个机器可以为每一个旅游的人打印一份计划出来,这个计划是多种多样,每个人的计划又不同。如下图所示:那这个计划如何生成? 种类这么多,使用的人这么多,这时候可以使用生成者模式代码如下://Builder.javapackage com.fa原创 2012-08-17 17:18:31 · 578 阅读 · 0 评论 -
适配器(adapter)模式
适配器模式很好理解,直接看图即可:即 Adapter实现 Target接口,同时自身内部有一个 Adaptee 引用.一个适配器模式大家都举的例子:上面类图的代码如下:public class EnumerationIterator implements Iterator { Enumeration enum; public EnumerationIterator(En原创 2012-08-17 09:58:59 · 611 阅读 · 0 评论 -
观察者模式
观察者的本质含义如下面图:把上述行为抽像出来即是如下类图:把上面类图以一下例子来实现。这个例子讲的是,一个气象站的公告电子牌,如果气象站的数据有更新,则各电子公告牌也应该更新,这时气像站是主题,各个电子公告牌是观察者。public interface Subject { public void registerObserver(Observer o); public v原创 2012-08-17 11:04:04 · 592 阅读 · 0 评论 -
控制反转(IoC) 的理解
控制反转是一个常见的面向对象技术,它主要应用在框架中。如 GUI框架,Spring框架等,这些框架为设计特定的应用程序提供了一般性的步骤,框架把核心的控制流程集成于自身,仅仅把一些具体的实现任务交给用户(程序员即为框架的用户),正是由于这些框架的产生才有必要用到控制反转技术。 也就是说,如果GUI框架仅仅被一个人使用,那么完全不用控制反转也行,因为此框架仅为一个人使用,这个人使用的类是什么样子的,原创 2012-08-16 17:56:32 · 890 阅读 · 0 评论 -
Factory模式
Factory模式还是很简单的,可以看一下上图:xy和xz 继承自 x, Factory 有一个方法 getClass, 此方法是用来产生 x 的, 那到底是产生 xy 还是 xz 呢? 这要由参数 abc 来决定,即Factory factory = new Factory() ;x = factory.getClass(abc); //这个 x 可能是 xy 也可能原创 2012-08-16 10:39:33 · 444 阅读 · 0 评论 -
Abstract Factory 模式
Abstract Factory 模式是 Factory的升级版, 即 Abstractory Factory 是产生 Factory的Factory, 如下图:PlantFactory 为一个基类, 它下面继承了三个工厂,依次用来产生一年生、二年生、三年生植物的,且无论是一年生、二年生、三年生植物工厂都可以产生适用于 “花园边界”(boarder)植物,适用于"花园中心"(center)原创 2012-08-16 11:43:56 · 505 阅读 · 0 评论 -
Iterator模式
Iterator复习时看下如下代码就了然于胸了!下面是一个接口,每一个集合都应该实现这个接口:// Selector.javapackage com.facaizhu;public interface Selector { boolean end(); Object current(); void next();}下面是实现上面接口的一个集合://原创 2012-08-15 10:09:36 · 451 阅读 · 0 评论 -
UML关系(泛化,实现,依赖,关联(聚合,组合))
UML的构造快包含3种: (1) 事物(4种):结构事物,行为事物,分组事物,注释事物(2) 关系(4种):泛化关系,实现关系,依赖关系,关联关系(3) 图(10种):用例图,类图,对象图,包图,组件图,部署图,状态图,活动图,序列图,协作图事物是对模型中最具代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物。 (2) 关系(4种)UML 中类与类, 类转载 2013-02-28 21:41:04 · 452 阅读 · 0 评论