Java_设计模式
scyatcs
这个作者很懒,什么都没留下…
展开
-
行为型模式----责任链模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配转载 2013-08-16 10:53:02 · 519 阅读 · 0 评论 -
行为型模式--策略模式
1,什么是策略模式?策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 2,策略模式有什么好处? 策略模式的好处在于你可以动态的改变对象的行为。 3,设计原则 设计原则是把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口(c++z中可以用虚类),然后在类中包含这个对象的实转载 2013-08-14 17:01:35 · 532 阅读 · 0 评论 -
结构型模式-装饰模式
装饰模式(Decorator)1. 装饰模式(Decorator)的定义:又名包装(Wrapper)模式,装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。2. 装饰模式以对客户端透明的方式动态的给一个对象附加上更多的责任。换言之客户端并不会觉的对象在装饰前和装饰后有什么区别。3. 装饰模式可以在不创造更多的子类的模式下,将对象的功能加以扩展。转载 2013-07-07 09:12:04 · 560 阅读 · 0 评论 -
行为型模式--调停者模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述调停者(Mediator)模式的: 调停者模式是对象的行为模式。调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。为什么需要调停者 如下图所示,这个示意转载 2014-10-22 16:33:30 · 748 阅读 · 0 评论 -
行为型模式--备忘录模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述备忘录(Memento)模式的: 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起转载 2014-10-24 15:27:24 · 498 阅读 · 0 评论 -
行为型模式--解释器模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述解释器(Interpreter)模式的: 解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式的结构 下面就以一个示意性的系统为例,讨论解释器模式的结构。系统的结构图如下所示: 模式所涉及的角色如下所示:转载 2014-10-24 16:50:24 · 486 阅读 · 0 评论 -
行为型模式--模板方法模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。模板方法模式的结构 模板方法模式是所转载 2014-10-24 17:08:17 · 501 阅读 · 0 评论 -
行为型模式--迭代器模式
1.迭代器角色定义了遍历的接口,但是没有规定由谁来控制迭代。在Java collection的应用中,是由客户程序来控制遍历的进程,被称为外部迭代器;还有一种实现方式便是由迭代器自身来控制迭代,被称为内部迭代器。外部迭代器要比内部迭代器灵活、强大,而且内部迭代器在java语言环境中,可用性很弱。 2.在迭代器模式中没有规定谁来实现遍历算法。好像理所当然的要在迭代器角色中实现。因为既便于一个容转载 2014-10-24 16:31:53 · 490 阅读 · 0 评论 -
结构型模式--适配器模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹转载 2014-10-24 17:18:32 · 521 阅读 · 0 评论 -
结构型模式--外观模式
1.概念为子系统中的一组接口提供一个统一接口。Facade模式定义了一个高层接口,这个接口使得这子系统更容易使用。2.UML3.代码下面是一个具体案例的代码:package facade; class DrawerOne { public void open(){ System.out.println("第一个抽屉被打开了");转载 2014-10-24 17:32:06 · 464 阅读 · 0 评论 -
行为型模式--状态模式
一 个 对象有多种状态,在不同的状态下,同一种方法有不同的行为。如果用swich-case语句,将有大量的条件分支和逻辑代码混在一起。状态模式将每个状态封装到一个独立的类中,利用多态性使得不同状态下同一种方法表现不同的行为。状态模式的UML 图如下: 星际中人族的机枪兵Marine有两种状态:普通状态和打了兴奋针后的状态,两种状态下机枪兵的开枪频率是不同的,我们用状态模式来实现转载 2014-10-13 17:32:54 · 595 阅读 · 0 评论 -
桥接模式与装饰者模式的区别
桥接模式的定义是将抽象化与实现化分离(用组合的方式而不是继承的方式),使得两者可以独立变化。可以减少派生类的增长。这样看起来和装饰者差不多,但两者还是有一些比较重要的区别:1。桥接模式中所说的分离,其实是指将结构与实现分离(当结构和实现有可能发生变化时)或属性与基于属性的行为进行分离;而装饰者只是对基于属性的行为进行封闭成独立的类。2。桥接中的行为是横向的行为,行为彼此之间无关联;而装饰者转载 2014-10-31 11:24:49 · 1744 阅读 · 0 评论 -
装饰者模式,代理模式与适配器模式的比较
装饰者与适配者模式的区别 1.关于新职责:适配器也可以在转换时增加新的职责,但主要目的不在此。装饰者模式主要是给被装饰者增加新职责的。 2.关于原接口:适配器模式是用新接口来调用原接口,原接口对新系统是不可见或者说不可用的。装饰者模式原封不动的使用原接口,系统对装饰的对象也通过原接口来完成使用。(增加新接口的装饰者模式可以认为是其变种--“半透明”装饰者)3.关于其包裹的对象:适配转载 2014-10-30 12:48:03 · 4760 阅读 · 0 评论 -
结构型模式--组合模式
先看看组合模式的定义吧:“将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。” 就拿剪发办卡的事情来分析一下吧。 首先,一张卡可以在总部,分店,加盟店使用,那么总部可以刷卡,分店也可以刷卡,加盟店也可以刷卡,这个属性结构的店面层级关系就明确啦。 那么,总店刷卡消费与分店刷卡消费是一样的道理,那么总店与分店对会员卡的使用转载 2014-10-20 18:46:41 · 581 阅读 · 0 评论 -
结构型模式--桥模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述桥梁(Bridge)模式的: 桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”。桥梁模式的用意 桥梁模式虽然不是一个使用频率很高的模式,但是转载 2014-10-20 17:38:58 · 414 阅读 · 0 评论 -
创建者模式与工厂模式的区别
工厂模式注重的创建对象的jia原创 2014-04-08 23:08:22 · 1180 阅读 · 0 评论 -
创建型模式--创建者模式
在创建者模式中,客户端不再负责对象的创建与组装,而是把这个对象创建的责任交给其具体的创建者类,把组装的责任交给组装类,客户端支付者对象的调用,从而明确了各个类的职责。虽然利用创建者模式可以创建出不同类型的产品,但是如果产品之间的差异巨大,则需要编写多个创建者类才能实现,如果这是结合工厂模式更好。组成部分创建者模式主要由五个部分构成:组装类,抽象创建者类,实现抽象创建者类转载 2014-04-08 23:02:09 · 551 阅读 · 0 评论 -
创建型模式---原型模式
一、优缺点 原型模式的优点在于:创建对象的时候没有用new方式,而是直接是对内存二进制流的拷贝,相对于new方式,性能更优, 原型模式的缺点在于:直接对内存二进制流的拷贝少了约束。二、实现 public class YuanXingMode { /** * 原型模式的优点在于:创建对象的时候没有用new方式,而是直接是对内存二进制原创 2013-07-30 11:20:22 · 744 阅读 · 0 评论 -
行为型模式-观察者模式的使用(一)
在一对多依赖的对象关系中, 如果这个'一'对象状态发生了变化,那么它所有依赖的'多'对象都应该被通知,然后做相应的变化,这就是观察者模式. 就如同'多'对象一直在观察'一'对象的状态变化一样.在一对多依赖的对象关系中, 如果这个'一'对象状态发生了变化,那么它所有依赖的'多'对象都应该被通知,然后做相应的变化,这就是观察者模式. 就如同'多'对象一直在观察'一'对象的状态变化一样.转载 2013-05-06 22:57:39 · 500 阅读 · 0 评论 -
行为型模式---访问者模式2
一、引子 对于系统中一个已经完成的类层次结构,我们已经给它提供了满足需求的接口。但是面对新增加的需求,我们应该怎么做呢?如果这是为数不多的几次变动,而且你不用为了一个需求的调整而将整个类层次结构统统地修改一遍,那么直接在原有类层次结构上修改也许是个不错的主意。 但是往往我们遇到的却是:这样的需求变动也许会不停的发生;更重要的是需求的任何变动可能都要让你将整个类层次结构修改个底转载 2013-08-16 10:14:46 · 533 阅读 · 0 评论 -
行为型模式---访问者模式
Visitor访问者模式定义作用于某个对象群中各个对象的操作. 它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作. 被访问者抽象类Node.javaJava代码 package com.javapatterns.visitor.visitorsimplified; abstract public class Node {转载 2013-08-15 11:12:12 · 565 阅读 · 0 评论 -
设计模式的分类
经典的《设计模式》一书归纳出23种设计模式,本文按《易学设计模式》一书归纳分类如下:1.创建型模式前面讲过,社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象的使用分开也就成为了必然趋势。因为对象的创建会消耗掉系统的很多资源,所以单独对对象的创建进行研究,从而能够高效地创建对象就是创建型模式要探讨的问题。这里有6个具体的创建型模式可供研究,它们分别是:简单工厂模式(转载 2014-03-26 15:41:37 · 486 阅读 · 0 评论 -
结构型模式---代理模式之综合
JAVA的静态代理与动态代理比较 一、概念 代理模式是常用的Java 设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。按照代理类的创建时期,代理类转载 2014-03-27 11:14:27 · 608 阅读 · 0 评论 -
行为型模式----命令模式
1.概念 将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。 在面向对象的程序设计中,一个对象调用另一个对象,一般情况下的调用过程是:创建目标对象实例;设置调用参数;调用目标对象的方法。但在有些情况下有必要使用一个专门的类对这种调用过程加以封装,我们把这种专门转载 2013-08-14 18:10:26 · 520 阅读 · 0 评论 -
结构型模式----代理模式之静态代理
public class StaticProxyMode { public static void main(String[] args) { HelloWorld proxy = new HelloWorldImplProxy(new HelloWorldImpl()); proxy.a(); System.out.println("===转载 2014-03-27 10:20:46 · 530 阅读 · 0 评论 -
行为型模式-观察者模式的使用
分享到一键分享QQ空间新浪微博百度搜藏人人网腾讯微博百度相册开心网腾讯朋友百度贴吧豆瓣网搜狐微博百度新首页QQ好友和讯微博更多...百度分享在一对多依赖的对象关系中, 如果这个'一'对象状态发生了变化,那么它所有依赖的'多'对象都应该被通知,然后做相应的变化,这就是观察者模式. 就如同'多'对象一直在观察'一'对象的状态变化一转载 2013-07-07 09:09:19 · 549 阅读 · 0 评论 -
结构型模式---代理模式之动态代理自己实现
import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class DynmicProxyMode { public static void main(String[] args) { final H原创 2014-03-27 11:41:58 · 678 阅读 · 0 评论 -
行为型模式-观察者模式之监听器
1.系统架构问题:程序应尽量写成“低耦合,高内聚”。(名词解释和理解:耦合:不同的模块拼装到一起,产生相互依赖的关系。高耦合:不同模块之间连接点很多,造成错综复杂的连接关系,修改程序时牵一发则动全身。低耦合:模块层次化,我觉得理想的效果是,每一层的模块只与它上一层和下一层的模块进行耦合,同层之间的模块是没有交互的。) 2.类的四大基本关系:转载 2013-06-26 10:35:20 · 721 阅读 · 0 评论 -
代理模式和装饰模式之间的区别
学习AOP时,教材上面都说使用的是动态代理,可是在印象中代理模式一直都是控制访问什么的,怎么又动态增加行为了,动态增加行为不是装饰器模式吗?于是 找了很多资料,想弄清楚这两者之间到底有什么区别。结果发现这一篇英文文章讲的很清晰,就翻译一下,供参考。 首先,让我们先看一下下面的这两个UML类图,他们分别描述了装饰器模式和代理模式的基本实现。转载 2014-03-27 11:50:37 · 554 阅读 · 0 评论 -
结构型模式---代理模式之动态代理与静态代理的区别
静态代理类: 由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存 在了,故内存中的Class对象是由JVM加载class文件生成的。动态代理类:在程序运行时,运用反射机制动态创建而成,即:内存中的Class对象由JVM的反射机制动态生成的,在 磁盘上面没有对应的c转载 2014-03-27 10:43:42 · 550 阅读 · 0 评论 -
创建型模式--工厂模式
一、三种工厂模式的优缺点1、简单工厂模式 最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类。对于客户端来说,去除了与 具体产品的依赖。 简单工厂模式违背了开-闭原则,有保持了封装对象创建过程的优点。 2、 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子 类。原创 2013-07-30 10:42:53 · 737 阅读 · 0 评论 -
结构型模式--享元模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述享元(Flyweight)模式的: Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。Java中的String类型 在JAVA语言中,String类型就是使用了享元模式转载 2014-10-21 11:38:34 · 478 阅读 · 0 评论