java设计模式
miliang1688
这个作者很懒,什么都没留下…
展开
-
Builder模式的理解
简单地说,就好象我要一座房子住,可是我不知道怎么盖(简单的砌墙,层次较低),也不知道怎么样设计(建几个房间,几个门好看,层次较高), 于是我需要找一帮民工,他们会砌墙,还得找个设计师,他知道怎么设计,我还要确保民工听设计师的领导,而设计师本身也不干活,光是下命令,这里砌一堵墙,这里砌一扇门,这样民工开始建设,最后,我可以向民工要房子了。在这个过程中,设计师是什么也没有,除了他在脑子里的设计和命令,转载 2014-04-02 23:58:58 · 532 阅读 · 0 评论 -
java组合模式实例
组合模式,是由GoF提出的23种软件设计模式的一种。其定义为:将对象组合成树形结构以表示“整体—部分”的层次结构。Composite模式使单个对象和组合对象的使用具有一致性。 Composite模式是构造型的设计模式之一,通过递归手段来构造诸如文件系统之类的树形的对象结构;Composite模式所代表的数据构造是一群具有统一接口界面的对象集合,并可以通过一个对象来访问所有的对象(遍历)。转载 2014-04-06 22:05:20 · 1402 阅读 · 0 评论 -
java模板方法模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。 模板方法模式的结构 模板转载 2014-04-06 22:11:15 · 476 阅读 · 0 评论 -
java策略模式
java设计模式之——策略模式 1,什么是策略模式? 策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 2,策略模式有什么好处? 策略模式的好处在于你可以动态的改变对象的行为。 3,设计原则 设计原则是把一个类中经常改变或者将来可能改变的部分转载 2014-04-06 22:20:21 · 584 阅读 · 1 评论 -
java策略模式实例
在Java的集合框架中,经常需要通过构造方法传入一个比较器Comparator,或者创建比较器传入Collections的静态方法中作为方法参数,进行比较排序等,使用的是策略模式。 策略模式的定义 定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。 策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。 体现了两个非常基本的面转载 2014-04-06 22:21:44 · 685 阅读 · 0 评论 -
java状态模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。 状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。 状态模式的结构 用一句话来表述,状态模式把所研究的对象的行为包装在不同转载 2014-04-06 22:24:19 · 485 阅读 · 0 评论 -
java备忘录模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述备忘录(Memento)模式的: 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原转载 2014-04-06 22:27:32 · 595 阅读 · 0 评论 -
java备忘录模式实例
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状 态。 备忘录模式引入一个存储状态的备忘录对象,为了让外部无法访问这个对象的值,一般把这个对象实现成需要保存数据的对象的内部类,通常还是私有的,保证封装性不被破坏。但是这个备忘录对象需要存储在外部,所以要让备忘录对象实现一个窄接口,这个接口是空的,转载 2014-04-06 22:29:32 · 787 阅读 · 0 评论 -
java享元模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述享元(Flyweight)模式的: Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。 Java中的String类型 在JAVA语言中,String类型就是使用了享元转载 2014-04-06 22:32:31 · 561 阅读 · 0 评论 -
java享元模式实例
GoF对享元模式的描述是:运用共享技术有效地支持大量细粒度的对象。 Flyweight模式是构造型模式之一,它通过与其他类似对象共享数据来减小内存占用。也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。在Flyweight模式中,由于要产生各种各样的对象,所以在Flyweight(享元)模式中常出现Factory模式。Flyweight的内部状态是用来转载 2014-04-06 22:34:36 · 889 阅读 · 0 评论 -
java职责链模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和转载 2014-04-06 22:42:00 · 491 阅读 · 0 评论 -
java桥接模式
桥接模式的本质:分离抽象与实现。 桥接模式的优点: ● 分离抽象与实现部分 这样极大地提高了系统的灵活性。让抽象与实现部分独立开来,分别定义自己的接口,这有助于对系统进行分层,从而产生更好的结构 化的系统。对于系统的高级部分,只需要知道抽象部分和实现部分的接口就可以了。 ● 更好的扩展性 由于把抽象部分和实现部分开了,而且分别定义了接口,这就使得抽象部分和实现部分转载 2014-04-06 22:48:35 · 501 阅读 · 0 评论 -
java单例模式
概念: java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。 单例模式有一下特点: 1、单例类只能有一个实例。 2、单例类必须自己自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、转载 2014-04-06 22:51:00 · 527 阅读 · 0 评论 -
java单例模式5中实现方法
[代码]Java中的五种单例模式实现方法 跳至 [1] [全屏预览] view source print? 01 package singleton; 02 03 /** 04 * @aut转载 2014-04-06 22:52:16 · 551 阅读 · 0 评论 -
java适配器模式1
在阎宏博士的《JAVA与模式》一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的转载 2014-04-05 23:14:07 · 419 阅读 · 0 评论 -
java组合模式
Composite定义: 将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性. Composite比较容易理解,想到Composite就应该想到树形结构图。组合体内这些对象都有共同接口,当组合体一个对象的方法被调用执行时,Composite将遍历(Iterator)整个树形结构,寻找同样包含这个方法的对象并实现调用执行。可转载 2014-04-06 22:03:20 · 487 阅读 · 0 评论 -
java代理模式2(动态)
1.代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式一般涉及到的角色有: 抽象角色:声明真实对象和代理对象的共同接口; 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任转载 2014-04-06 21:43:55 · 409 阅读 · 0 评论 -
java 工厂方法模式
定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。 类型:创建类模式 类图: 工厂方法模式代码 [java] view plaincopy interface IProduct { public void productMethod(); }转载 2014-04-03 00:08:52 · 495 阅读 · 0 评论 -
java 抽象工厂模式
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。 类型:创建类模式 类图: 抽象工厂模式与工厂方法模式的区别 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,转载 2014-04-03 00:09:42 · 542 阅读 · 0 评论 -
java 迭代器模式
定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。 类型:行为类模式 类图: 如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧: [java] view plaincopy public static void转载 2014-04-03 00:14:27 · 513 阅读 · 0 评论 -
Java之外观模式(Facade Pattern)
1.概念 为子系统中的一组接口提供一个统一接口。Facade模式定义了一个高层接口,这个接口使得这子系统更容易使用。 2.UML 3.代码 下面是一个具体案例的代码: package facade; class DrawerOne { public void open(){ System.out.println("第一个抽转载 2014-04-03 00:18:40 · 465 阅读 · 0 评论 -
Java观察者模式的浅析
简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者对象能够自动更新。 观察者模式的结构 观察者(Observer)模式是对象的行为型模式,又叫做发表-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-收听者(Sou转载 2014-04-03 00:26:11 · 522 阅读 · 0 评论 -
java建造者(Builder)模式
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 类型:创建类模式 类图: 四个要素 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。抽象建造者:引入抽象转载 2014-04-03 00:06:03 · 589 阅读 · 0 评论 -
Java之装饰模式(Decorator Pattern)
1. 概念 动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。[由于继承的静态特质使其缺乏灵活性;且随着子类的增多、组合,会导致更多子类的膨胀。类应设计的对扩展开放,对修改关闭。装饰的意思:就是包装一下。把另的对象包装一下。] 2. UML图 3.代码 /************业务接口转载 2014-04-03 00:23:24 · 494 阅读 · 0 评论 -
java 观察者模式
定义:定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。 类型:行为类模式 类图: 在软件系统中经常会有这样的需求:如果一个对象的状态发生改变,某些与它相关的对象也要随之做出相应的变化。比如,我们要设计一个右键菜单的功能,只要在软件的有效区域内点击鼠标右键,就会弹出一个菜单;再比如,我们要设计一个自动部署转载 2014-04-03 00:28:08 · 551 阅读 · 0 评论 -
Java 之工厂方法和抽象工厂模式
1. 概念 工厂方法:一抽象产品类派生出多个具体产品类;一抽象工厂类派生出多个具体工厂类;每个具体工厂类只能创建一个具体产品类的实例。 即定义一个创建对象的接口(即抽象工厂类),让其子类(具体工厂类)决定实例化哪一个类(具体产品类)。“一对一”的关系。 抽象工厂:多个抽象产品类,派生出多个具体产品类;一个抽象工厂类,派生出多个具体工厂类;每个具体转载 2014-04-03 00:10:35 · 427 阅读 · 0 评论 -
java中介者模式1
定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。 类型:行为类模式 类图: 中介者模式的结构 中介者模式又称为调停者模式,从类图中看,共分为3部分: 抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子转载 2014-04-05 23:26:24 · 456 阅读 · 0 评论 -
java中介者模式2
中介者的功能非常简单,就是封装对象之间的交互。 如果一个对象的操作会引起其他相关对象的变化,或者是某个操作需要引起其他对象的后续或连带操作,而这个对象又不希望自己来处理这些关系,那么久可以找中介者,把所有麻烦扔给它,只要在需要的时候通知中介者,其他的就让中介者去处理就可以了。 反过来,其他对象在操作时,可能会引起这个对象的变化,也可以这么做。最后对象之间就完全分离了,谁都不直接跟其他对转载 2014-04-05 23:30:07 · 549 阅读 · 0 评论 -
java原型模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述原型(Prototype)模式的: 原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是选型模式的用意。 原型模式的结构 原型模式要求对象实现一个可以“克隆”自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。这样一来,通过转载 2014-04-05 23:18:16 · 484 阅读 · 0 评论 -
java适配器模式2
目的: 将一个类的接口转换成客户希望的另外一个接口。A d a p t e r 模式使得原本由于接口 不兼容而不能一起工作的那些类可以一起工作。 ----- 尽量优先使用Object Adapter的模式。 意图: # 你想使用一个已经存在的类,而它的接口不符合你的需求。 # 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容转载 2014-04-05 23:15:16 · 508 阅读 · 0 评论 -
java代理模式1
代理模式是由GoF提出的23种软件设计模式的一种。其定义为:为其他对象提供一种代理以控制对这个对象的访问。别名:Surrogate。 所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。Proxy模式是很常见的模式,在我们生活中处处可见,例如我们买火车票不一定非要到火车站去买,可以到一些火转载 2014-04-06 21:42:05 · 473 阅读 · 0 评论 -
java命令模式
1.概念 将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。 在面向对象的程序设计中,一个对象调用另一个对象,一般情况下的调用过程是:创建目标对象实例;设置调用参数;调用目标对象的方法。 但在有些情况下有必要使用一个专门的类对这种调用过程加以封装,我转载 2014-04-06 21:55:33 · 558 阅读 · 0 评论