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