
设计模式
零度anngle
情商不是八面玲珑的圆滑,而是德行具足后的虚心、包容和自信;成熟不是单纯到复杂的世故,而是复杂回归简单的超然;觉悟不是对世事的无所谓,而是对无能为力之事的坦然接受;成功不是追求别人眼中的最好,而是把自己能做的事情做得最好。热爱生活,热爱编程,热爱Java,喜欢探索,纸上得来终觉浅,绝知此事要躬行,愿与你一起在技术的海洋中成长!
博客:http://blog.csdn.net/zmx729618
展开
-
java之装饰模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述装饰(Decorator)模式的: 装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将转载 2016-05-26 15:56:01 · 410 阅读 · 0 评论 -
23种设计模式(12)-享元模式
享元模式 一、 概念 二、享元的用途 三、结构和分类 1、单纯享元模式 2、复合享元模式 四、享元模式的优缺点 一、概念 Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。也就是说在一个系统中如转载 2017-07-14 10:23:04 · 328 阅读 · 0 评论 -
23种设计模式(13)-策略模式
策略模式 一、概述 二、策略模式的结构 三、具体案例 四、认识策略模式 一、概述1.定义策略模式属于对象行为型模式,主要针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响 到客户端的情况下发生变化。通常,策略模式适用于当一个应用程序需要实现一种特定的服务或者功能,而且该程序有多种实现方式时使用。转载 2017-07-14 10:51:26 · 427 阅读 · 0 评论 -
23种设计模式(3/4)-工厂模式(简单工厂模式/工厂方法模式/抽象工厂模式)
Java设计模式工厂模式 一、引言 二、分类 三、简单工厂模式 四、工厂方法模式 五、抽象工厂模式 六、和工厂方法模式区别 七、总结工厂模式 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤:转载 2017-07-07 16:53:01 · 430 阅读 · 0 评论 -
23种设计模式(15)-观察者模式
观察者模式 一、定义 二、结构 具体案例 推模型和拉模型 三、Java提供的对观察者模式的支持 Observer接口 Observable类 一、定义观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模转载 2017-07-21 14:46:37 · 535 阅读 · 0 评论 -
23种设计模式(19)-备忘录模式
备忘录模式 一、 概念 二、 结构 三、 分类 1.”白箱”备忘录模式的实现 2.“黑箱”备忘录模式的实现 3.“多重”检查点 4.”自述历史”模式 引子 我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状 态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用转载 2017-07-31 09:53:25 · 338 阅读 · 0 评论 -
23种设计模式(14)-模板方法模式
模板方法模式 一、概述 二、结构 三、具体案例 四、优缺点和设计思想 一、概述 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意二、结构 模转载 2017-07-18 17:07:13 · 412 阅读 · 0 评论 -
23种设计模式(20)-状态模式
状态模式 一、概述 二、结构 三、具体案例 四、认识状态模式 一、概述 定义:允许一个对象的内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 本质:根据状态来分离和选择行为。 状态:对象实例的属性值。 行为:对象的功能,大多对应到方法上。 状态模式的功能:分离状态的行为,通过维护状态的变化,来调用不同装态对应的不同功能。 状态和行为是相转载 2017-07-31 10:28:46 · 380 阅读 · 0 评论 -
23种设计模式(22)-调停者模式
调停者模式 定义:调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。为什么需要调停者 如下图所示,这个示意图中有大量的对象,这些对象既会影响别的对象,又会被别的对象所影响,因此常常叫做同事(Colleagu转载 2017-08-01 11:57:49 · 521 阅读 · 0 评论 -
23种设计模式(23)-解释器模式
解释器模式 定义:解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式的结构 下面就以一个示意性的系统为例,讨论解释器模式的结构。系统的结构图如下所示: 模式所涉及的角色如下所示: (1)抽象表达式(Expression)角色:声明一个所有的具体表达式角色转载 2017-08-02 11:26:57 · 338 阅读 · 0 评论 -
23种设计模式(16)-迭代子模式
一、 概述 二、 结构 1.白箱聚集与外禀迭代子 2.黑箱聚集与内禀迭代子 主动迭代子和被动迭代子 静态迭代子和动态迭代子 Fail Fast Fail Fast在JAVA聚集中的使用 迭代子模式的优点 一、概述1.定义 迭代子模式又叫游标(Cursor)模式,是对象的行为模式。迭转载 2017-07-26 16:38:23 · 873 阅读 · 0 评论 -
23种设计模式(17)-责任链模式
责任链模式 一、 概念 二、 引子 三、 结构 四、 具体案例 一、概念 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到 链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地转载 2017-07-28 10:05:44 · 315 阅读 · 0 评论 -
23种设计模式(21)-访问者模式
访问者模式 一、概述 1、定义 2、分派的概念 3、分派的类型 4、双重分派 二、结构 三、具体案例 一、概述 1、定义 访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。(访问者模式是一种分离对象数据结构与行为的方法,通过这种分离,可以为一个已存在的转载 2017-08-01 11:05:14 · 395 阅读 · 0 评论 -
23种设计模式(11)-组合模式
组合模式 一、定义 二、结构 三、具体案例 四、适用性 五、总结 一、定义 将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。二、结构类图 角色: 1.Component 是组合中的对象声明接口,在适当的情况下,转载 2017-07-13 16:44:07 · 326 阅读 · 0 评论 -
23种设计模式(10)-桥接模式
桥接模式 (Bridge) 一、定义 二、结构 三、具体案例 1.传统方法 2.使用桥接模式 四、应用场景 一、定义将抽象部分与实现(行为)部分分离,使它们都可以独立的变化。 桥接模式的做法是把变化部分(实现)抽象出来,使变化部分与主类(抽象)分离开来,从而将多个维度的变化彻底分离。最后,提供一个管理类(如下面的引擎类)来组合不同维转载 2017-07-13 11:44:48 · 282 阅读 · 0 评论 -
23种设计模式(9)-外观模式
外观模式 一、定义 二、结构 三、案例 四、特点 一、定义Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。二、结构门面(Facade)角色 :客户端可以调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责转载 2017-07-13 11:19:23 · 366 阅读 · 0 评论 -
java之单例模式的七种写法
第一种(懒汉,线程不安全): 1 public class Singleton { 2 private static Singleton instance; 3 private Singleton (){} 4 public static Singleton getInstance() { 5 if (instance == n转载 2016-05-26 15:30:04 · 551 阅读 · 1 评论 -
工厂方法模式与抽象工厂模式
一、引子 话说十年前,有一个暴发户,他家有三辆汽车——Benz奔驰、Bmw宝马、Audi奥迪,还雇了司机为他开车。不过,暴发户坐车时总是怪怪的:上Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“开宝马车!”,坐上Audi说“开奥迪车!”。你一定说:这人有病!直接说开车不就行了?! 而当把这个暴发户的行为放到我们程序设计中来时,会发现这是一个普遍存在的现原创 2016-05-26 17:12:04 · 3560 阅读 · 1 评论 -
责任链设计模式(过滤器/拦截器)
责任链设计模式(Chain of Responsibility)的应用有:Java Web中的过滤器链、springmvc中的拦截器链,Struts2中的拦截器栈等等。 先看如下一个问题: 给定一个字符串“被就业了:),敏感信息,”,对其中的HTML标记和敏感词进行过滤或替换。本文主要以该问题设计方法的演变来讲解责任链设计模式。第一种设计:没有任何设计模式翻译 2016-05-27 10:53:42 · 6178 阅读 · 1 评论 -
23种设计模式及java实现
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式转载 2016-05-27 14:02:07 · 5470 阅读 · 1 评论 -
java设计模式之策略模式
1、什么是策略模式? 策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 2、策略模式有什么好处? 策略模式的好处在于你可以动态的改变对象的行为。 3、设计原则 设计原则是把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接翻译 2016-05-27 14:44:45 · 621 阅读 · 0 评论 -
让技术人员看得懂的面向对象设计流程
1、概述 谈到流程,大家都会想到熟悉的瀑布模型、螺旋模型、迭代开发、敏捷、RUP等一堆软件工程相关的软件开发流程,但是请不要误会,本文的流程和这些管理流程完全不同,为了以示区分,我把瀑布模型、敏捷、RUP等流程成为项目流程,也就是说这是给项目管理用的;而本文的流程是技术流程,是给技术人员(主要是设计人员)看的流程。在开始讲解之前,看看如下问题你是否能够回答?1、客户翻译 2016-05-27 15:24:20 · 12579 阅读 · 0 评论 -
Java观察者模式与事件驱动模式实例比较
一、观察者模式所涉及的角色有: ● 抽象主题(Subject)角色:抽象主题角色把所有对观察者对象的引用保存在一个聚集(比如ArrayList对象)里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象,抽象主题角色又叫做抽象被观察者(Observable)角色。 ● 具体主题(ConcreteSubject)角色:将有关状态存入具体观察者对象;在具体转载 2017-05-24 16:15:21 · 4750 阅读 · 2 评论 -
23种设计模式(5)-原型模式
原型模式(Prototype) 一、概述 二、结构 三、浅度克隆和深度克隆 浅度克隆 深度克隆 一、概述 定义:原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。简言之:就是复制粘贴。这就是选型模式的用意。 二、结构原型模式主要用于对象的复制,它的核心是就是类图中的原转载 2017-07-11 09:38:22 · 417 阅读 · 0 评论 -
23种设计模式(6)-适配器模式
适配器模式 1、概述 2、适配器模式的用途 3、模式中的角色 4、实现方式 5、类适配器和对象适配器的权衡 6、缺省适配模式 1、概述 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。2、适配器模式的用途 即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可转载 2017-07-11 10:37:58 · 412 阅读 · 0 评论 -
23种设计模式(2)-建造者模式
建造者模式 一、概念 1、产品的内部表象 2、对象性质的建造 二、建造模式的结构 三、建造模式分成两个很重要的部分 四、使用场景 五、使用建造模式构建复杂对象 一、概念 建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以转载 2017-06-22 15:22:44 · 616 阅读 · 0 评论 -
23种设计模式(1)-单例模式
单例模式 一、特点: 二.分类 (一)、懒汉式单例 (二)、双重检查锁定 (三)、静态(类级)内部类 (四)、饿汉式单例 (五)、单例和枚举 三、饿汉式和懒汉式区别 一、特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保转载 2017-06-22 11:22:09 · 356 阅读 · 0 评论 -
23种设计模式(7)-装饰者模式
装饰模式 一、概述 二、装饰模式的结构 三、具体案列 四、装饰模式与类继承的区别 五、装饰模式的特点: 六、装饰模式、适配器模式、代理模式区别 一、概述1.装饰模式(Decorator)的定义:又名包装(Wrapper)模式,装饰模式以对客户端透明的方式扩展对象的功能转载 2017-07-12 11:41:00 · 386 阅读 · 0 评论 -
23种设计模式(8)-代理模式
代理描述 1.生活中: 代理就是一个人或者一个组织代表其他人去做一件事的现实生活中的。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。2.官方: 代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用一、静态代理 类图结构如下 在代理模式转载 2017-07-12 16:16:37 · 390 阅读 · 0 评论 -
单例模式的五种写法:懒汉/饿汉/双重检验锁/静态内部类/枚举
单例模式算是设计模式中最容易理解,也是最容易手写代码的模式了吧。但是其中的坑却不少,所以也常作为面试题来考。本文主要对几种单例写法的整理,并分析其优缺点。很多都是一些老生常谈的问题,但如果你不知道如何创建一个线程安全的单例,不知道什么是双检锁,那这篇文章可能会帮助到你。懒汉式,线程不安全当被问到要实现一个单例模式时,很多人的第一反应是写出如下的代码,包括教科书上也是这样教我们的。转载 2017-11-16 14:12:19 · 799 阅读 · 0 评论