23天征服--23种设计模式
文章平均质量分 88
《Java设计模式》的目的是让读者不仅学习怎样在软件设计中使用好设计模式,更重要的是让读者通过学习使用设计模式深刻地理解面向对象的设计思想,以便更好地使用面向对象语言解决设计中的诸多问题
汤高
喜欢开源的框架技术、乐于研究其底层源码,把个人从学习到工作中用到的所有技术梳理总结,也分享给所有爱学习新技术的朋友们,相互交流,一起进步
展开
-
Java设计模式(二十三)----解释器模式
解释器模式 定义:解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式的结构 下面就以一个示意性的系统为例,讨论解释器模式的结构。系统的结构图如下所示: 模式所涉及的角色如下所示: (1)抽象表达式(Expression)角色:声明一个所有的具体表达式角色都需要实现的抽象接口。这原创 2016-02-13 11:19:05 · 855 阅读 · 0 评论 -
Java设计模式(二十二)----调停者模式
调停者模式 定义:调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。为什么需要调停者 如下图所示,这个示意图中有大量的对象,这些对象既会影响别的对象,又会被别的对象所影响,因此常常叫做同事(Colleague)对象。原创 2016-02-13 11:09:19 · 980 阅读 · 0 评论 -
Java设计模式(二十一)----访问者模式
访问者模式 一、概述 1、定义 2、分派的概念 3、分派的类型 4、双重分派 二、结构 三、具体案例 一、概述 1、定义 访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。2、分派的概念 变量被声明时的类型叫做变量的静态类型(Static Typ原创 2016-02-11 14:57:55 · 1096 阅读 · 2 评论 -
Java设计模式(二十)----状态模式
状态模式 一、 概述 二、结构 三、具体案例 四、认识状态模式 一、概述 定义:允许一个对象的内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 本质:根据状态来分离和选择行为。 状态:对象实例的属性值。 行为:对象的功能,大多对应到方法上。 状态模式的功能:分离状态的行为,通过维护状态的变化,来调用不同装态对应的不同功能。 状态和行为是相关联的,可以描述为:状态决定原创 2016-02-10 16:09:31 · 1493 阅读 · 8 评论 -
Java设计模式(十九)----备忘录模式
备忘录模式 一、 概念 二、 结构 三、 分类 1.”白箱”备忘录模式的实现 2.“黑箱”备忘录模式的实现 3.“多重”检查点 4.”自述历史”模式 引子 我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状 态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来进行返 回。原创 2016-02-10 11:25:32 · 1164 阅读 · 2 评论 -
Java设计模式(十七)----责任链模式
责任链模式 一、 概念 二、 引子 三、结构 四、具体案例 一、概念 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到 链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织 和分配责任。原创 2016-02-04 16:38:11 · 1242 阅读 · 2 评论 -
Java设计模式(十六)----迭代子模式
迭代子模式 一、 概述 二、 结构 1.白箱聚集与外禀迭代子 2.黑箱聚集与内禀迭代子 主动迭代子和被动迭代子 静态迭代子和动态迭代子 Fail Fast Fail Fast在JAVA聚集中的使用 迭代子模式的优点 一、概述1.定义 迭代子模式又叫游标(Curs原创 2016-02-03 20:51:20 · 1368 阅读 · 1 评论 -
Java设计模式(十五)----观察者模式
观察者模式 一、定义 二、结构 具体案例 推模型和拉模型 三、Java提供的对观察者模式的支持 Observer接口 Observable类 一、定义观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。 观察者模式定义了一种原创 2016-02-02 20:42:39 · 923 阅读 · 3 评论 -
Java设计模式(十四)----模板方法模式
模板方法模式 一、概述 二、结构 三、具体案例 四、优缺点和设计思想 一、概述 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意二、结构 模板方法模式是所有模式中最为原创 2016-02-02 12:58:26 · 1044 阅读 · 1 评论 -
Java设计模式(十三)----策略模式
策略模式 一、概述 二、策略模式的结构 三、具体案例 四、认识策略模式 一、概述1.定义策略模式属于对象行为型模式,主要针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响 到客户端的情况下发生变化。通常,策略模式适用于当一个应用程序需要实现一种特定的服务或者功能,而且该程序有多种实现方式时使用。策略模式,又叫算法簇模式,就是原创 2016-01-31 18:52:07 · 1002 阅读 · 1 评论 -
Java设计模式(十二)----享元模式
享元模式 一、 概念 二、享元的用途 三、结构和分类 1、单纯享元模式 2、复合享元模式 四、享元模式的优缺点 一、概念 Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。 也就是说在一个系统中如果有多个相同的对象,那么只原创 2016-01-31 16:17:33 · 2529 阅读 · 4 评论 -
Java设计模式(十一)----组合模式
组合模式 一、定义 二、结构 三、具体案例 四、适用性 五、总结 一、定义 将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和使用具有一致性。二、结构类图 角色: 1.Component 是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为原创 2016-01-30 20:52:49 · 957 阅读 · 3 评论 -
Java设计模式(十)----桥接模式
桥接模式 (Bridge) 一、定义 二、结构 三、具体案例 1.传统方法 2.使用桥接模式 四、应用场景 一、定义将抽象部分与实现(行为)部分分离,使它们都可以独立的变化。 桥接模式的做法是把变化部分(实现)抽象出来,使变化部分与主类(抽象)分离开来,从而将多个维度的变化彻底分离。最后,提供一个管理类(如下面的引擎类)来组合不同维度上原创 2016-01-30 17:37:17 · 1622 阅读 · 3 评论 -
Java设计模式(九)----外观模式
外观模式 一、定义 二、结构 三、案例 四、特点 一、定义Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。二、结构门面(Facade)角色 :客户端可以调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责任。在正常情况下,本角色会将所原创 2016-01-30 14:02:28 · 877 阅读 · 2 评论 -
Java设计模式(八)----代理模式
代理描述 1.生活中: 代理就是一个人或者一个组织代表其他人去做一件事的现实生活中的。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 2.官方: 代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用一、静态代理 类图结构如下 在代理模式中的角色:原创 2016-01-03 10:49:59 · 1127 阅读 · 4 评论 -
Java设计模式(七)----装饰模式
装饰模式 一、概述 二、装饰模式的结构 三、具体案列 四、装饰模式与类继承的区别 五、装饰模式的特点: 六、装饰模式、适配器模式、代理模式区别 一、概述1.装饰模式(Decorator)的定义:又名包装(Wrapper)模式,装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案原创 2016-01-29 18:18:54 · 990 阅读 · 2 评论 -
Java设计模式(六)----适配器模式
适配器模式 1、概述 2、适配器模式的用途 3、模式中的角色 4、实现方式 5、类适配器和对象适配器的权衡 6、缺省适配模式 1、概述 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。2、适配器模式的用途 即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。原创 2016-01-28 16:25:01 · 973 阅读 · 2 评论 -
Java设计模式(五)----原型模式
原型模式(Prototype) 一、概述 二、结构 三、浅度克隆和深度克隆 浅度克隆 深度克隆 一、概述 定义:原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。简言之:就是复制粘贴。这就是选型模式的用意。 二、结构原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Pr原创 2016-01-27 18:19:22 · 1060 阅读 · 3 评论 -
Java设计模式(三—四)----工厂模式
Java设计模式工厂模式 一、引言 二、分类 三、简单工厂模式 四、工厂方法模式 五、抽象工厂模式 六、和工厂方法模式区别 七、总结工厂模式 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初原创 2016-01-21 22:19:42 · 1019 阅读 · 4 评论 -
Java设计模式(二)----建造者模式
建造者模式 一、概念 1、产品的内部表象 2、对象性质的建造 二、建造模式的结构 三、建造模式分成两个很重要的部分 四、使用场景 五、使用建造模式构建复杂对象 一、概念 建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割原创 2016-01-24 16:44:05 · 1515 阅读 · 2 评论 -
Java设计模式(一)----单例模式
单例模式 一、特点: 二.分类 (一)、懒汉式单例 (二)、双重检查锁定 (三)、静态(类级)内部类 (四)、饿汉式单例 (五)、单例和枚举 三、饿汉式和懒汉式区别 一、特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自原创 2016-01-23 00:08:31 · 1585 阅读 · 4 评论