设计模式
文章平均质量分 72
iteye_14104
这个作者很懒,什么都没留下…
展开
-
设计模式之代理模式
设计模式之代理模式代理模式代理模式是常用的java设计模式,他的特征是代理类与委托类具有相同的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类对象的相关方法,来提供特定的服务;静态代理类实例代码:...原创 2016-05-05 15:43:37 · 84 阅读 · 0 评论 -
设计模式之创建者模式Builder
创建者模式场景我们要建造一个复杂的产品,比如:神州飞船、Iphone。这个复杂的产品的创建,有这样一个问题需要处理装配这些字子组件是不是有个步骤问题实际开发中,我们所需要的对象构建是,也非常复杂,有很多步骤需要处理时 建造模式的本质 分离了对象子组件的单独构造(有Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象,这个模式适用于...原创 2016-05-18 09:27:13 · 77 阅读 · 0 评论 -
设计模式之工厂模式
工厂模式本质实例化对象,用工厂方法代替new操作将选择实现类,创建对象同意管理和控制,从而将调用者跟我们的实现类解耦 实现创建者和调用者的分离三种工厂方式简单工厂模式:用来生产同一等级结构中的任意产品,对于增加的新产品,需要修改已有代码工厂方法模式:用来生产同一等级结构中的固定产品,支持增加任意产品抽象工厂模式:用来生产不同产品族的全部产品,对于增加新...原创 2016-05-18 09:27:14 · 66 阅读 · 0 评论 -
设计模式之适配器模式Adapter
适配器模式Adapter什么是适配器模式?将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作 模式中结构(以电脑和键盘为例)目标接口Target:客户所期待的接口,目标可以是具体或抽象的类,也可以是接口(USB)需要适配的类Adaptee:需要适配的类或适配者类 (键盘)适配器Adapt...原创 2016-05-18 09:28:17 · 105 阅读 · 0 评论 -
设计模式之原型模式
原型模式 通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式就是java中的克隆技术,以某个对象为原型,复制出新的对象,显然,新的对象具备原型对象的特点优势有:效率高可以直接克隆,避免了重新执行构造过程步骤克隆类似于new,但是不同于new。nei创建新的对象属性采用的是默认值,克隆出的对象的属性值完全和原型对象相同,并且克隆出的新对象改变不会影...原创 2016-05-18 09:28:46 · 85 阅读 · 0 评论 -
设计模式之观察者模式Observer
场景网站上很多人订阅了 java 主题的新闻,当有这个主题新闻时,就会将这些新闻发给所有订阅的人把多个订阅者或客户称之为观察者;需要同步给多个订阅者的数据封装到对象中,称之为目标观察者模式主要用于 1:N 的通知,当一个对象(目标对象Subject或Observable)的状态变化时,他需要及时告知一系列对象(观察者对象,Observer),令他们做出响应通知...原创 2016-05-18 09:29:29 · 92 阅读 · 0 评论 -
设计模式之访问者模式Visitor
访问者模式 实现思路:向对象结构类中添加元素,然后定义多种访问者,使用对象结构类去接受访问者即可。 六个角色:抽象访问者(Visitor):抽象出访问元素的动作,该操作接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色,这样访问者就可以通过元素角色给具体访问的具体元素角色。这样访问者就可以通过该元素角色的特定接口直接访问它具体访问者(ConcreteV...原创 2016-05-19 09:24:47 · 102 阅读 · 0 评论 -
设计模式之责任链模式
责任链模式场景: 公司里面,报销个单据需要经过流程;申请人填单申请,申请给经理;小于1000,经理审核;超过1000,交给总经理审批总经理审批通过;结构抽象处理者角色(Handler:Approver):定义一个处理请求的接口,和一个后继连接(可选)具体处理者角色(ConcreteHandler:President):处理它所负责的请求,可以访问后继者...原创 2016-05-19 09:25:43 · 103 阅读 · 0 评论 -
设计模式之中介者模式
中介者模式假如没有总经理,下面六个个部门,财务部、市场部、研发部,财务部要发工资,让大家核对公司需要跟市场部和研发部都通气,市场部要接个新项目,需要研发部门处理技术,需要财务部出资金,市场部跟各个部门打交道,虽然只有六个个部门,但是关系非常乱实际上,公司有总经理,各个部门有什么事情都通报给总结里,总经理再通知各个相关部门这就是一个典型的’中介者模式“,总经理起到一个中介、协调的作...原创 2016-05-19 10:09:42 · 61 阅读 · 0 评论 -
设计模式之观察者模式之源-监听器(Source/Listener)模式
观察者模式 源-监听器(Source/Listener)模式 事件监听器模式重要的三个概念:事件+事件监听器+事件源 $("#div").addEventListener("click",function(event){}); 事件源:$("#div") 即id = div的html元素 事件:click事件对应的对象 事件监听器:function(event...原创 2016-05-19 10:12:32 · 354 阅读 · 0 评论 -
设计模式之Reactor(Dispatcher、Notifier)
[align=center][size=x-large]Reactor设计模式[/size][/align]reactor设计模式,是一种基于事件驱动的设计模式。将一个或多个客户的服务请求分离(demultiplex)和调度(dispatch)给应用程序。[img]http://dl2.iteye.com/upload/attachment/0111/7402/18cd3423-f0f...原创 2016-05-20 14:10:27 · 749 阅读 · 0 评论 -
设计模式基础之类关系
类与类之间的表示关系 依赖关系 :简单的理解,依赖就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖。表现在代码层面,为类B作为参数被类A在某个method方法中使用。在UML类图设计中,依赖关系用由类A指向类B的带箭头虚线表示。 关联关系 :关联体现的...原创 2016-05-23 16:23:52 · 90 阅读 · 0 评论 -
设计模式之单例模式
单例模式核心作用保证一个类中只有一个实例,并且提供一个访问该实例的全局访问点 项目中的配置文件,一般也只有一个对象,没必要每次都都new一遍,配置文件不容易改变Spring中bean的加载,以及控制器对象也是单例模式 单例模式五种实现方式饿汗式:编程安全,调用效率高。但是不能延时加载懒汉式:线程安全,调用效率不高,但是可以延时加载双重检测锁式(由于...原创 2016-05-17 14:08:22 · 72 阅读 · 0 评论 -
设计模式之桥接模式bridge
设计模式之桥接模式bridge 场景商城系统中常见的商品分类,以电脑为类,如何良好的处理商品分类销售的问题?这个场景中有两个变化维度:电脑类型、电脑品牌 多层继承结构实现问题 扩展性问题(个数膨胀问题)如果要增加一个新的电脑类型智能手机,则要增加各个品牌下面的类如果要增加一个新的品牌,也要增加各种电脑类型的类违反单一职责原则一个类:联想笔记...原创 2016-05-17 14:07:38 · 114 阅读 · 0 评论 -
设计模式之外观模式Facade
外观模式核心 为子系统提供统一的入口,封装子系统的复杂性,便于客户端调用 代码public class Client { //服务员直接就给充好咖啡,放到面前。这就是享受生活 public static void main(String[] args) { Waiter wait = new...原创 2016-05-17 14:07:13 · 84 阅读 · 0 评论 -
模板方法模式
模板方法模式 (Template Method)特点:1.定义了一个操作中的算法骨架,而将部分步骤的实现在子类中完成。模板方法模式使得子类可以不 变一个算法的结构即可重定义该算法的某些特定步骤。2.它是基于继承的代码复用的基本技术,没有关联关系,因此在模板方法模式的类图中,只有继承关系3.模板方法模式需要开发抽象类和具体子类的设计师之间的协作。一个设计师负责给...原创 2016-05-06 14:48:57 · 66 阅读 · 0 评论 -
设计模式之状态模式
状态模式 1.核心:用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题 2.结构: Context环境类: 环境类中维护一个State对象,他是定义了当前的状态 State抽象状态类:每一个类封装了一个状态对应的行为 3.结构图 4.场景: 酒店系统中,房间的状态变化(不同状态下相互切换)已预定已入住已空闲 ...原创 2016-05-07 10:33:51 · 83 阅读 · 0 评论 -
设计模式之策略模式
策略模式核心策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。策略模式对应于解决某一个问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问题,同时可以方便的更换算法或者增加新的算法,并且有客户端决定调用哪个算法 ; 结构(1) 环境对象Context:该类中实现了对抽象策略中定义的接口或者抽象...原创 2016-05-07 12:29:21 · 62 阅读 · 0 评论 -
设计模式之命令模式Command
命令模式 命令模式:将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。也称之为:动作Action模式、事务transaction模式 结构:Command抽象命令类ConcreteCommand具体命令类Invoker调用者/请求者:请求的发送者,它通过命令对象来执行请求,一个调用者并不需要再设...原创 2016-05-08 00:03:33 · 59 阅读 · 0 评论 -
设计模式之中介者模式
中介者模式假如没有总经理,下面三个部门,财务部、市场部、研发部,财务部要发工资,让大家核对公司需要跟市场部和研发部都通气,市场部要接个新项目,需要研发部门处理技术,需要财务部出资金,市场部跟各个部门打交道,虽然只有三个部门,但是关系非常乱 假如没有总经理,六个部门的关系非常混乱,实际上公司都总结里,各个部门有什么事情都通报到总经理这里,总经理再通知各个相关部门,我们可以引入...原创 2016-05-09 10:51:42 · 82 阅读 · 0 评论 -
设计模式之迭代器模式
迭代器模式提供一种可以遍历聚合对象的方式,又称cursor模式。迭代器模式(Iterator)就是分离了聚合对象的遍历行为,抽象出一个迭代器来负责这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部数据。聚合对象:存储数据迭代器:遍历数据 结构图聚合抽象类一般以内部类的方式存储 /** * 定义迭代器接口 */public i...原创 2016-05-09 17:02:35 · 72 阅读 · 0 评论 -
设计模式之享元模式
场景:内存属于稀缺资源,不要随便浪费。如果有很多个完全相同或相似的对象,我们可以通过享元模式,节省内存核心享元对象能够做到共享的关键是区分了内部状态和外部状态内部状态:可以共享,不会随环境变化而改变外部状态:不可以共享,会随环境的变化而改变 简单享元结构 抽象享元角色:为具体享元角色规定了必须实现的方法,而外蕴状态就是以参数的形式通过此方法传入。在Jav...原创 2016-05-10 10:56:51 · 61 阅读 · 0 评论 -
设计模式之组合模式composite
组合模式内容把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象 核心 抽象构件(Component)角色:定义了叶子和容器构件的共同点叶子(Leaf)构件角色:无子节点容器(Composite)构件角色:有容器特征,可以包含子节点结构图: 组合模式工作流程分析组合模式为处理树形结构提供了...原创 2016-05-10 13:57:53 · 73 阅读 · 0 评论 -
观察者模式与发布/订阅模式区别
观察者模式与发布/订阅模式区别 在翻阅资料的时候,有人把观察者(Observer)模式等同于发布(Publish)/订阅(Subscribe)模式,也有人认为这两种模式还是存在差异,而我认为确实是存在差异的,本质上的区别是调度的地方不同。观察者模式比较概念的解释是,目标和观察者是基类,目标提供维护观察者的一系列方法,观察者提供更新接口。具体观察者和具体目标继承各自的基类,...原创 2016-05-15 23:09:42 · 82 阅读 · 0 评论 -
设计模式之装饰者模式Decorator
装饰者模式职责动态的为一个对象增加新的功能装饰模式是一种用于代替继承的技术,无须通过类继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀 装饰者模式隐含的是通过一条条装饰链去实现具体对象,每一条装饰链都始于一个Componet对象,每个装饰者对象后面紧跟着另一个装饰者对象,而对象链终于ConcreteComponet对象...原创 2016-05-17 14:06:10 · 77 阅读 · 0 评论 -
设计模式之备忘录模式memento
备忘录模式 就是保存某个对象内部状态的拷贝,这样以后就可以将对象恢复到原先的状态结构 源发器类originator:就是我们的业务模型,它本身可能有非常多的字段(或叫做变量)。一个字段的值发生了改变,我们可以认为Originator的状态就发生了变化。Originator里面有一个IMemento类型的字段用来记录状态的变化(它相当于一个记事本,用来备忘的)备忘录类M...原创 2016-05-17 14:06:44 · 78 阅读 · 0 评论 -
gof23种设计模式之总结
总体来说设计模式分为三大类:创建型模式:共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式:共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式:共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 以作用划分:创...原创 2016-07-28 15:12:20 · 186 阅读 · 0 评论