`
zzq19860626
  • 浏览: 261220 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
B20df9e2-fb3d-3644-9f72-c1619842f682
设计模式学习笔记
浏览量:178104
87eaf24f-812a-3463-8e65-e3197d2ad8c2
java虚拟机
浏览量:26215
社区版块
存档分类
最新评论
文章列表
下面是JDK中有关23个经典设计模式的示例,在stakeoverflow也有相应的讨论:http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns Structural(结构模式) Adapter:把一个接口或是类变成另外一种。   java.util.Arrays#asList() javax.swing.JTable(TableModel) java.io.InputStreamReader(InputStream) java.io.OutputStreamWriter(Outpu ...
命令(Command)模式:又称Action模式或者Transaction模式。它属于对象的行为模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和撤销功能。 GoF命令模式结构图如下:    命令模式是有以下角色: 抽象命令(Command)角色:声明执行操作的接口。 具体命令(ConcreteCommand)角色:将一个接收者对象绑定到一个动作上。调用接收者相应的操作,以实现Execute方法。 客户端(Client)角色:创建一个命令对象并设定它的接收者。 请求者(Inv ...
责任链(Chain of Responsibility)模式:责任链模式是对象的行为模式。使多个对象都有机会处理请求,从而避免请求的发送者和接受者直接的耦合关系。将这些对象连成一条链,沿着这条链传递该请求,直到有一个对象处理它为止 ...
观察者(Observer)模式:是对象的行为模式,又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听(Source/Listener)模式或者从属(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察 ...
模版方法(Template Method)模式:属于类的行为模式,它的用意是定义一个操作中的算法的骨架,将一些操作延迟到子类中。使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 模版方法模式的类图如下: 模版方法模式有两个角色: 1、抽象模版(Abstract Template)角色:定义了一个或多个抽象操作,同时定义了一个模版方法,它是一个具体的方法,作为抽象模版的骨架。实际的逻辑在抽象操作中,推迟到子类实现。 2、实现模版(Concrete Template)角色:实现了抽象模版中一个或多个抽象方法。   这里举个模拟计算器的例子来说模版方法模式, ...
策略(Strategy)模式:又名Policy,它的用意是定义一组算法,把它们一个个封装起来,并且使他们可以相互替换。策略模式可以独立于使用他们的客户端而变化。GOF策略模式静态结构类图如下: 通过上图可以看出策略模式有以 ...
桥梁(Bridge)模式:又称Handle/Body。将抽象部分和实现部分分离,使它们都可以独立的变化。桥梁模式属于对象的结构模式。 GOF桥梁模式的示意性结构类图如下: 通过上图可以看出桥梁模式有以下角色: 抽象化(Abstraction)角色:给出抽象化定义并持有一个实现化对象的引用。 修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。 实现化(Implementor)角色:给出实现化的接口角色的接口,但不给出具体的实现。 具体实现化(Concrete Implementor)角色:给出实现化角色接口的具体实现。   ...
门面(Facade)模式(也叫外观模式),为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。如下图表示: 从上图可以看出门面模式是把复杂的业务封装到了子系 ...
享元(Flyweight)模式:通过共享技术以便有效的支持大量细粒度的对象。 享元模式在阎宏的《java与模式》中分为单纯享元模式和复合享元模式,复合模式的复合享元是不可以共享的,享元对象能做到共享的关键是区分内蕴态(Internal State)和外蕴态( External State)。这两个“蕴态”翻译的太难懂,我不是说翻译的不好,可能是我理解能力差,还是《Design Pattern Elements of Reusable Object-Oriented Software》的翻译版《设计模式可复用面向对象软件的基础》一书总翻译为内部对象和外部对象,相对直白,对概念性的东西文学气味 ...
代理(proxy)模式:指目标对象给定代理对象,并由代理对象代替真实对象控制客户端对真实对象的访问。 代理模式模式有以下角色: 抽象主题(subject)角色:声明真实主题和代理主题的共同接口。 真实主题(real subject)角色:定义代理对象需要代理的真实对象。 代理主题(proxy subject)角色:代替真实对象来控制对真实对象的访问,代理对象持有真实对象的应用,从而可以随时控制客户端对真实对象的访问。 代理模式结构类图: 代理模式在java里面很常见,在开源框架里如spring,mybatis等里面大量使用。现实生活中也很常见,比如我们访问facebook主站,常 ...
装饰(Decorator)模式属于设计模式里的结构模式,通过装饰类动态的给一个对象添加一些额外的职责。装饰模式也叫包装(wrapper)模式。装饰模式有如下的角色: 抽象构件(component)角色:这个角色用来规范被装饰的对象,一般用接口方式给出。 具体构件(concrete component)角色:被装饰的类。 装饰(decorator)角色:持有一个构件对象的实例。并定义一个跟抽象构件一直的接口。 具体(concrete  decorator )装饰角色:负责给具体构件添加附加职责的类。在实际使用中多数情况下装饰角色和具体装饰角色可能由一个类来承担。 装饰模式的类图如下: ...
适配器(adapter)模式,把一个类的接口变成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式有两种形式,类的适配器模式和对象的适配器模式。我们先看类的适 ...
这节开始学习结构模式,结构模式包括:组合模式、门面模式、适配器模式、代理模式、装饰模式、桥模式、享元模式。从组合模式开始学习。 组合模式(Composite)就是把部分和整体的关系用树形的结构来表示,从而使客户端 ...
原型模式(prototype)它是指通过给定一个原型对象来指明所要创建的对象类型,然后复制这个原型对象的办法创建出同类型的对象。原型模式也属于创建模式。 我们先来看一下原型模式的模型: 原型模型涉及到三个角色: 客户角色(client):客户端提出创建对象的请求; 抽象原型(prototype):这个往往由接口或者抽象类来担任,给出具体原型类的接口; 具体原型(Concrete prototype):实现抽象原型,是被复制的对象; 模拟代码如下:   package prototype; /** * *作者:alaric *时间:2013-7-18下午10 ...
建造模式(Builder)是对象的创建模式,建造模式可以将一个产品的内部表象与产品的生产过程分割开来,从而可以是建造过程生成具有不同内部表象的产品对象。一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是对象,通常我们称作内部表象,不同的产品可以有不同的内部表象,也就是不同的零件。使用建造模式可以使客户端不需要知道所生成的产品有那些零件,每个产品对应的零件彼此有何不同,是怎么建造出来的,以及怎样组成产品的。建造模式的简略图如下图所示: 建造模式的角色:抽象建造者(Builder)角色:给出一个抽象接口,用来规范产品对象各个组成成分的建造,跟商业逻辑无关,但是一般 ...
Global site tag (gtag.js) - Google Analytics