java设计模式
文章平均质量分 72
雷小涛的摸爬滚打
一个天资愚钝的JAVA程序员!
展开
-
JAVA设计模式之复合模式
1. 什么是复合模式?《Head First设计模式》定义:复合模式结合两个或以上的模式,组成一个解决方案,解决一再发生的一般性问题。2. 复合模式经典应用:MVC 图片来源于网络 MVC是经典复合模式,结合了观察者模式、组合模式和策略模式。(1)Model(模型)使用观察者模式,以便自己状态改变时通知观察者更新,同时保持两者之间的解耦(2)Control(控制器)原创 2017-11-29 16:35:23 · 508 阅读 · 0 评论 -
JAVA设计模式之观察者模式
观察者模式1.什么是观察者模式?《Head Frist设计模式》中定义是:在对象之间定义一对多的依赖关系,当一个对象改变状态,依赖它的对象都会收到通知并自动更新。观察者和被观察者之间用松耦合的方式结合,被观察者不知道观察者的细节,只知道观察者实现了统一的观察者接口Observer,在JDK中已经默认提供。被观察者可以称为主题(Subject),默认都继承了统一的被观察者超类Obse原创 2017-09-07 16:08:36 · 367 阅读 · 0 评论 -
JAVA设计模式之策略模式
策略模式1.什么是策略模式?《Head Frist设计模式》书中对于策略模式的定义是:定义了算法族,分别封装起来使算法之间可以相互替换,算法的变化独立于使用(调用)该算法的客户(或者叫对象)。个人理解为定义了一系列的算法,把每个算法单独封装起来,并且他们之间可以相互替换(实现了同一个接口),使得算法可独立于使用它的客户而变化。 2.角色策略模式中包含三个角色组成(图原创 2017-09-07 15:59:10 · 377 阅读 · 0 评论 -
JAVA设计模式之生成器模式
1. 什么是生成器模式?《Head First设计模式》中定义:封装一个产品的构造过程,并允许按步骤构造。生成器模式(Builder Pattern)将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。生成器模式是对象创建型模式,又叫建造者模式。生成器模式针对的是复杂对象的创建。它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构原创 2017-12-04 10:32:22 · 489 阅读 · 0 评论 -
JAVA设计模式之备忘录模式
1. 什么是备忘录模式?备忘录模式(Memento Pattern):不破坏封装的前提下,捕捉一个对象的内部状态,并在这个对象之外存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式又叫标记模式和快照模式,是对象的行为型模式。备忘录对象是用来储存在某个时刻一个对象内部状态的对象。采用备忘录模式,我们可以使用一个备忘录对象来储存某个时刻原创 2017-12-12 16:40:22 · 456 阅读 · 2 评论 -
JAVA设计模式之原型模式
1. 什么是原形模式?原型模式(Prototype Pattern)用原形对象指定创建对象的种类,并且通过-拷贝这些原形来创建新的对象。原形模式用于创建重复的对象,同时又能保证性能。原型模式属于创建型模式。原形模式要求原形对象实现一个“克隆”自身的方法,通过调用这个方法来创建一个新的实例对象。说到“克隆”就不得不提深克隆和浅克隆,请参考另一片文章《java克原创 2017-12-13 15:04:36 · 294 阅读 · 0 评论 -
JAVA设计模式之责任链模式
1. 什么是责任链模式?创建多个对象,使这些对象行成一条链,并沿着这条链传递请求,直到链上的某个对象决定处理此请求,这就是责任链模式。接收请求的对象形成一条链,这些对象在链上具有层级关系的。这些对象可以处理请求,也可以传递请求,直到有对象处理此请求为止。责任链模式归根结底就是多重判断,和if、else if是相同的功能,但是条件比较多的情况下,使用if/else会造成代原创 2017-12-05 11:36:36 · 382 阅读 · 0 评论 -
JAVA设计模式之访问者模式
1. 什么是访问者模式?访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问者两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。访问者模式使得用户可以在不修改现有系统的情况下扩展系统的功能,为这些不同类型的元素增加新的操作。在使用访问者模式时,被访问元素通常不是单独存在的,它们存储在一个集合中,这个集合被称为“对象结构”,访转载 2017-12-14 11:19:51 · 247 阅读 · 0 评论 -
JAVA设计模式总目录
JAVA设计模式 一、创建型 单例模式(Singleton Pattern)生成器模式(Builder Pattern):又叫建造者模式原型模式(Prototype Pattern)工厂模式(Factory Pattern):包括:静态工厂;工厂方法;抽象工厂。 二、行为型 中介者模式(Mediator Pattern):又叫调停者模式。访问者模式(原创 2017-12-14 14:53:00 · 339 阅读 · 0 评论 -
JAVA设计模式之解释器模式
1. 什么是解释器模式? 定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。解释器模式是一种类行为型模式。注:此模式使用较少,本人也为使用过,想要掌握此模式需要一些形式语法的知识。2. 角色 图片来源于网络抽象解释器(Expression):声明一个所有的具体表达式角色都需要实现的抽象接口。这个接口主要有一个称做解转载 2017-12-07 11:33:15 · 322 阅读 · 0 评论 -
JAVA设计模式之装饰者模式
装饰者模式1.什么是装饰者模式? 装饰者模式指在不改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。也就是创建一些装饰对象来装饰对象,使对象具有装饰对象的行为。《Head First设计模式》书中指出,动态地将行为附加到对象上,动态的扩展对象功能,装饰者模式提供了一种有别于继承体系的另一种实现。继承属于功能扩展形式之一,但不是弹性设计的最佳方案。装饰者类反映出被装原创 2017-09-07 16:58:50 · 411 阅读 · 0 评论 -
JAVA设计模式之工厂模式
工厂模式1. 什么是工厂模式?Java使用关键字new创建一个新的对象,在一些复杂的业务中,一个对象的创建往往伴随着其他操作的进行,比如数据的初始化,关联对象的实例化。因此在这样的系统中创建一个对象往往是一个繁复的工作。如何轻松方便的构造实例对象,而不用关心构造对象实例的复杂过程和细节,这就是工厂模式存在的原因。建立一个“工厂”专门创建对象实例。工厂模式包含(按照抽象程度弱强排列)原创 2017-10-31 15:37:09 · 317 阅读 · 0 评论 -
JAVA设计模式之中介者模式
1. 什么是中介者模式?中介者模式(Mediator Pattern)是用一个中介对象(中介者)来封装一系列对象之间的交互,中介者使各对象之间不用显式的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。中介者模式又称为调停者模式,是一种对象行为型模式。如果系统之中出现大量对象之间相互引用,将会造成(1)系统结构变得复杂。对象与对象之间存在大量相互引用,若一个对象改变原创 2017-12-08 15:50:31 · 322 阅读 · 0 评论 -
JAVA设计模式之桥接模式
1. 什么是桥接模式?桥接模式(Bridge Pattern):将抽象部分与他的实现部分分离,使他们都可以独自变化。桥接模式是一种对象结构型模式。对于有两个或多个变化维度(即多个变化的原因)时,将每个维度分离开并采用相互组合的方式可以减少类与类之间的耦合,同时有利于扩展,这种方式就是桥接模式。对于定义中的抽象与实现分离开可以理解为将维度与维度分离开,使之单独变化,互不影响。原创 2017-11-30 17:27:39 · 370 阅读 · 0 评论 -
JAVA设计模式之状态模式
1. 什么是状态模式?《Head First设计模式》中定义:允许对象在内部状态改变时改变他的行为,对象看起来就像是修改了他的类。状态模式是对象的行为模式。这个模式将状态封装成独立的类,将行为委托到代表当前状态的对象里面,这样行为就会随着内部状态改变而改变。状态模式允许一个对象基于内部状态而拥有不同的行为。对象的状态通常指的是对象的属性值。而行为指对象的功能原创 2017-11-22 18:45:15 · 517 阅读 · 0 评论 -
JAVA设计模式之组合模式
1. 什么是组合模式?《Head First设计模式》中定义:允许将对象组成树形结构来表现“整体-部分”的层次结构。组合模式能让客户以一致的方式处理个别对象和对象组合。为了保持透明性,组合模式内部所有的对象都必须实现同一个接口,否则客户就必须操心哪个对象是用的哪个接口,这就失去了组合模式的意义。组合模式又称为“整体-部分模式”,是一种对象结构型模式。2. 角色公原创 2017-11-16 17:44:15 · 596 阅读 · 0 评论 -
JAVA设计模式之迭代器模式
1. 什么是迭代器模式?《Head First设计模式》定义,提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部表示。迭代器模式让我们能游走于聚合对象内的每一个元素,而又不暴露其内部的表示。当多线程引用同一个集合的迭代器时,可能会出现意想不到的错误,所以多线程使用迭代器时,必须特别小心。迭代器模式属于行为型模式对于迭代器来说,数据结构原创 2017-11-15 15:27:45 · 1094 阅读 · 0 评论 -
JAVA设计模式之模板方法模式
1. 什么是模板方法模式?《Head First设计模式》书中定义:在一个方法中定义一个算法的骨架,而将一些步骤的实现延迟到子类中。模板方法模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法模式为我们提供了一种代码复用的重要技巧。模板方法的抽象类可以定义抽象方法、具体方法(具体方法中也可以包含钩子方法)。抽象方法由子类实现。钩子方法子类可以选择性重写覆盖。钩子原创 2017-11-14 15:41:54 · 1423 阅读 · 0 评论 -
JAVA设计模式之外观模式
1. 什么是外观模式? 《Head First设计模式》中定义,提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,使子系统更容易使用。 外观模式可以让客户和子系统之间避免紧密耦合,避开子系统复杂的接口调用关系,直接访问一个简单接口。 外观模式没有“封装”子系统,只是提供了一个简化的访问接口,将子系统的功能完整的暴露出来,原创 2017-11-10 11:04:24 · 256 阅读 · 0 评论 -
JAVA设计模式之适配器模式
1.什么是适配器模式?《Head First设计模式》中定义:讲一个类的接口,转换为客户期望的另一个接口,使原本接口不兼容的两个类可以相互合作。适配器模式有两种形式:类适配器、对象适配器。类适配器需要用到“多重继承”;对象适配器使用组合。对象适配器不仅可以适配某个类,也可以适配该类的任何子类(因为采用组合的方式,实现了共同接口的类都可以适配),但是必须实现被适配者类的所有方法。类适配器只能原创 2017-11-09 17:42:32 · 379 阅读 · 0 评论 -
JAVA设计模式之命令模式
1. 什么是命令模式?《Head First设计模式》书中定义,命令模式将请求封装成对象,从而可以用不同的请求对客户端进行参数化;还可以实现请求队列、请求日志记录、宏命令和请求撤销等操作。个人理解,命令模式中将请求操作单独封装成对象,可以称之为命令对象,每一个命令包含一个请求接收者和一系列的动作,这样请求者和接收者之间就没有直接耦合,实现了解耦。请求者不用关心请求什么时候执行、怎么原创 2017-11-03 10:35:12 · 353 阅读 · 0 评论 -
JAVA设计模式之单例模式
1. 什么是单例模式?《Head First设计模式》书中定义,单例模式是确保一个类最多只有一个实例,并提供全局访问点。在java中实现单例模式需要一个私有构造函数、一个静态变量和一个静态方法(枚举法实现单例模式例外)。使用单例模式必须要时刻注意并解决线程安全问题。自己理解,单例模式中,类负责创建自己的对象,同时确保只有一个对象被创建。这个类提供了访问自己这个唯一对象的方式,可以直接访问,原创 2017-11-01 19:17:23 · 359 阅读 · 0 评论 -
JAVA设计模式之代理模式
1. 什么是代理模式?《Head First设计模式》定义:为另一个对象提供一个“替身”或占位符以访问这个对象。代理模式在结构上类似于装饰者模式,但是两者目的不同。代理模式是提供一个对象用来访问另一个对象,装饰者模式是创建一些对象来装饰一个对象。代理模式控制访问,装饰者模以扩展功能。代理模式除了控制访问意外,另一个重要应用就是:在不改变目标方法代码的基础上,增加额外的功能,为目标对象扩原创 2017-11-28 18:51:56 · 310 阅读 · 0 评论