设计模式
LzwGlory
坚持自己的路
展开
-
设计模式初探-责任链模式(CHAIN OF RESPONSIBILITY)
责任链模式(CHAIN OF RESPONSIBILITY),通过将多个对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它,属于对象行为型模式。责任链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。JavaScript的事件处理,工作流系统中公文的多级审批,Web开发中的过滤器和拦截器都可以采用责任链模式实现。一、使用场景1、有多个对象可以处理同转载 2014-03-03 11:26:04 · 1777 阅读 · 3 评论 -
设计模式初探-抽象工厂模式(Abstract Factory)
抽象工厂模式,Abstract Factory,按GOF的划分属于对象创建型模式,用于提供一个创建一系列相关或相互依赖对象的接口,而不用指定它们具体实现的类,很好的实践了“面向接口编程”的准则。一、使用场景:1、一个系统要独立于它的产品的创建,组合和表示,比如跨操作系统的文本编辑器,文本编辑器操作的应该是编辑器视图组件独立于操作系统的抽象,而不是具体于某操作系统的实现。2、转载 2014-03-05 11:48:59 · 913 阅读 · 0 评论 -
GRASP模式
GRASP模式,这个模式出自《UML和模式应用》,GRASP是General Responsibility Assignment Software Pattern(通用责任分配软件模式)的缩写,在这本书里面在分析系统阶段主要是建立概念模型,概念模型是从真实世界转换到计算机世界的过渡模型,根据用户的需求,如果是在XP里面抽取出Use Story里面的名词,在RUP里面抽取出Use Case里面的转载 2014-03-05 11:18:41 · 1672 阅读 · 0 评论 -
23种设计模式全解析
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式转载 2014-09-16 22:24:54 · 952 阅读 · 0 评论 -
Spring中的设计模式-适配器模式
适配模式的定义如下:将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配儿无法在一起工作的两个类能够在一起工作。 看下适配器模式的类图:Spring中也有适配器模式的典型应用。 在Spring的Aop中,使用的Advice(通知)来增强被代理类的功能。Spring实现这一AOP功能的原理就使用代理模式(1、JDK动态代理。2、CG转载 2015-10-07 15:56:36 · 1039 阅读 · 0 评论 -
《JAVA与模式》之适配器模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的转载 2015-10-07 15:55:16 · 454 阅读 · 0 评论 -
观察者模式UML图与源代码
以下是UML图(注:Obsever接口,Observable类是java.util包下文件): 源代码:Product Java代码 import java.util.Observable; public class Product extends Observable{ private String n转载 2016-07-01 16:18:11 · 2441 阅读 · 0 评论 -
装饰者设计模式----IO流
Java装饰模式 装饰模式:给一个类添加一些额外的职责,并且在添加这些额外的职责时不会控制该类的执行逻辑。 装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式以对客户端透明的方式动态的给一个对象附加上更多的责任。换言之客户端并不会觉的对象在装饰前和装饰后有什么区别。实例化 装饰者子类的时候,是调用构建者子类来实例化,不会调用装饰者类,装饰者类对客户端转载 2016-07-04 16:30:37 · 711 阅读 · 0 评论 -
设计模式--spring源码中使用策略模式(Strategy Pattern)
策略模式(Strategy Pattern)中体现了两个非常基本的面向对象设计的基本原则:封装变化的概念;编程中使用接口,而不是对接口实现。策略模式的定义如下:定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。策略模式使开发人员能够开发出由许多可替换的部分组成的软件,并且各个部分之间是弱连接的关系。弱连接的特性使转载 2016-07-04 17:32:14 · 3178 阅读 · 0 评论 -
(Factory Method)工厂方法模式的Java实现
工厂方法模式(Factory Method):定义一个用于创建对象的接口IFactory,在具体的ConcreteFactory子类中根据传进的参数即具体子类ConcreteProduct决定实例化哪一个IProduct产品,该模式使得一个类(即IProduct)的实例化延迟到其子类(即ConcreteProduct)。通用类图如下:代码实现如下: // 产品接口,定转载 2016-07-04 18:17:37 · 417 阅读 · 0 评论 -
Java单例模式(Singleton)
单例模式主要用于:有一些对象我们只需要一个,比如:线程池、缓存、对话框、处理偏好设置、注册表对象、日志对象以及配置文件对象、数据库连接对象等等。单例模式常用于管理共享资源,例如:数据库连接或者线程池。Java Singleton模式就为我们提供了这样实现的可能。使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利Java垃圾回收(garbagecollection)转载 2016-07-04 18:21:21 · 460 阅读 · 0 评论 -
设计模式初探-观察者模式(OBSERVER)又称发布-订阅(Publish-Subscribe)依赖(Dependents)
观察者模式(OBSERVER),又称发布-订阅(Publish-Subscribe),依赖(Dependents),通过定义对象间的一对多的依赖关系,达到当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新,属于对象行为型模式。观察者模式在软件设计中很常用,比如经典的MVC模式,Model为目标类,View为观察者,Controller为更新管理器。首先更新管理器即控制器先将视图和模转载 2014-03-04 22:21:39 · 1907 阅读 · 0 评论 -
设计模式初探-工厂方法模式(Factory Method)
工厂方法模式,Factory Method,属于对象创建型模式,通过定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。工厂方法通过抽象的接口,将创建对象的行为交给具体的子类。一、使用场景1、当一个类不知道它所必须创建的对象的类的时候,由于不知道要创建对象的类,所以不能直接实例化类,只能交给其他知道该类的类去做,比如某接口转载 2014-03-05 11:47:00 · 979 阅读 · 0 评论 -
设计模式初探-迭代器模式(ITERATOR)又称游标(Cursor)
迭代器模式(ITERATOR),又称游标(Cursor),提供了一种方法,用于顺序访问一个聚合对象中的各个元素,而不需暴露该对象的内部表示,属于对象行为型模式。迭代器模式通过将对聚合对象(通常为列表)的访问和遍历从聚合对象中分离出来并放入一个迭代器对象中,迭代器对象知道如何遍历列表,这样不仅可以简化聚合对象的实现(将遍历操作交给迭代器负责,自己只负责保存),还可以以不同的方式遍历列表。一、转载 2014-03-03 11:53:56 · 2298 阅读 · 0 评论 -
设计模式初探-策略模式(STRATEGY),别名政策(Policy)
策略模式(STRATEGY),别名政策(Policy),通过将一系列的算法封装成一个个的策略对象,使算法可以相互替换,并能独立于使用它们的客户而变化,属于对象行为型模式。软件开发过程中,通常要设计相应的算法,比如电子网站中经常有折扣活动,并且用户等级不同,享受的折扣也不一样。通过使用策略模式将折扣算法封装起来,不仅可以用于网商平台,还可以用于手持设备中折扣活动的实现。封装的特性确保了扩展算法和增加转载 2014-03-03 14:33:04 · 2441 阅读 · 0 评论 -
设计模式初探-状态模式(STATE)别名状态对象(Objects for States)
状态模式(STATE),别名状态对象(Objects for States),允许一个对象在其内部状态改变时改变它的行为,看起来就像修改了它的类,属于对象行为型模式。状态模式通过将所有与特定状态相关的行为封装到一个或多个状态对象中,当状态改变时,其行为也会随着改变,从而简化大量的条件判断,使代码逻辑更清晰,更易于维护。大千世界,可以看做各个状态的转换。人,生老病死;水,固液气三态转化;天气,阴晴不转载 2014-03-04 09:16:35 · 1019 阅读 · 0 评论 -
设计模式初探-中介者模式(MEDIATOR)又称调停者模式
中介者模式(MEDIATOR),又称调停者模式,通过使用一个中介者对象来封装一系列的对象交互,属于对象行为型模式。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。现实生活中,到处充斥着中介者模式的身影。上到庄严的法院,下到为程序员带来福音的婚姻介绍所或交友平台,还有可恶的房产中介,都是中介者模式的体现。比如,你参加一个相亲活动,20多对男女如饥似渴地寻找着自转载 2014-03-04 09:39:16 · 1047 阅读 · 0 评论 -
设计模式初探-外观模式(FACADE)也叫门面模式
外观模式(FACADE),也叫门面模式,属于对象结构型模式,通过为子系统中的一组接口提供一个一致的界面(外观对象)来简化客户端与子系统之间的交互。Facade模式定义了一个高层接口,这个接口为子系统中较一般的设施提供一个单一而简单的界面,从而使子系统间的通信和相互依赖关系达到最小,并且隔离了客户类和子系统类,降低了两者的耦合度。如下图所示:一、使用场景 1、 当要为转载 2014-03-04 09:54:23 · 914 阅读 · 0 评论 -
设计模式初探-桥接(Bridge)模式,又称Handle/Body模式
桥接(Bridge)模式,又称Handle/Body模式,属于对象结构型模式。用于将抽象部分与它的实现部分分离,使它们都可以独立地变化。比如常见的电脑窗口界面,不同的操作系统其窗口界面绘制的原理肯定不一样。这里,窗口界面就相当于抽象部分(Abstraction),而窗口界面本身也可以随着功能的不同而进行扩充,扩充的窗口就是抽象窗口的扩充抽象类(RefinedAbstraction),这些抽象需要具转载 2014-03-03 16:29:58 · 2479 阅读 · 0 评论 -
设计模式初探-命令模式(COMMAND),又称动作(Action),事务(Transaction)
命令模式(COMMAND),又称动作(Action),事务(Transaction),通过将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,实现对请求排队或记录请求日志,以及支持可撤销的操作。命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。一、使用场景1、需要抽象出待执行的动转载 2014-03-03 20:54:45 · 2466 阅读 · 0 评论 -
设计模式初探-单例模式(Singleton)
Singleton模式,又称单例模式,它保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式在平常开发中经常用到,比如系统的全局配置属性,常用的工具类或工厂方法都可以实现为一个单例。单例模式概念很简单,实现起来也不麻烦,但一不小心还是有可能出错的。一、使用场景只要是要求实例唯一的都可以使用单例模式来实现,特别是耗资源的实例!二、UML图三、Ja转载 2014-03-05 10:25:28 · 898 阅读 · 0 评论 -
设计模式初探-代理模式(PROXY)
代理模式(PROXY),别名Surrogate(代理),通过为其他对象提供一种代理以控制对这个对象的访问,属于对象结构型模式。软件开发中,经常会出现特殊对象,创建这些对象时开销很大,比如文档中的图片,数据库连接等,我们应该根据需要对这些对象进行创建,当图片可见时创建图片对象,当数据库连接真的需要执行时创建连接。通过创建代理,我们可以控制对象的创建,访问时机。创建图片代理,将其作为占位符插入到文档中转载 2014-03-05 11:44:52 · 899 阅读 · 0 评论 -
OOA/OOD/OOP
OO(object-oriented): 基于对象概念 , 以对象为中心 , 以类和继承为构造机制 , 来认识 , 理解 , 刻画客观世界和设计 , 构建相应的软件系统的一门方法 ; 模拟人类的思维方式 , 使开发 , 维护 , 修改更加容易。 OOA(object-oriented analysis): 强调的是在系统调查资料的基础上,针对 OO 方法所需要的素材进行的归类分析和整理,而转载 2014-03-04 11:23:18 · 883 阅读 · 0 评论 -
设计模式----模板方法模式UML和实现代码
摘要模板方法模式(Template Method) 定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法可以不改变一个算法的结构即可重新定义该算法的某些特定步骤, 是一个很常用的设计模式。 类型:形为型模式 顺口溜:中访策备迭 观模命状职解一、什么是模板方法模式?模板方法模式(Template Method) 定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板转载 2016-07-06 17:59:53 · 2160 阅读 · 0 评论