设计模式
吃果冻不吐果冻皮
坚持输入+输出学习模式,并让其变成一种习惯。
展开
-
设计模式学习笔记---工厂模式(Java版)
详细分类一、简单工厂模式二、工厂方法模式三、抽象工厂模式一、简单工厂模式简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。不修改代码的话,是无法扩展的。无工厂模式package com.lgd.simplefactory;public interface Car { v原创 2015-02-11 21:33:38 · 945 阅读 · 0 评论 -
设计模式学习笔记--中介者模式Mediator pattern(Java版)
一、场景公司里各个部门的总经理二、实质如果一个系统中对象之间的联系呈现为网状结构,对象之间存在大量多对多关系,将导致关系及其复杂,这种对象为“同事对象”。我们可以引入一个中介者对象,使各个同事对象只跟中介者对象打交道,将复杂的网络结构化解为星形结构。三、示例package com.lgd.mediator;//同事类的接口public interfac原创 2015-03-05 11:40:19 · 771 阅读 · 0 评论 -
设计模式学习笔记---模板方法模式template method pattern(Java版)
一、场景 客服到银行办理业务: 1、取号排队 2、办理具体现金/陷阱/转账/企业/个人/理财业务 3、给银行工作人员评分二、实质 它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。(处理步骤父类中定义好,具体实现延迟到子类中定义。) 三、示例 package com.lg原创 2015-03-14 09:46:37 · 1000 阅读 · 0 评论 -
设计模式学习笔记---状态模式state pattern(Java版)
一、场景 红绿灯 红灯、黄灯、绿灯 网上购物,订单的状态 下单、已付款、已发货、送货中、已收货 电梯运行 维修、正常、自动开关、自动开门、消防状态、向上运动、向下运动 酒店系统,房间的状态变化 已预订 已入住 空闲二、实质 用于解决复杂对象的状态转换以及不同状态下行为的封装问题 三、结构 Contex环境类(维护一个state对象,它定义了当前的状态) State抽象状态原创 2015-03-14 10:46:58 · 1053 阅读 · 0 评论 -
设计模式学习笔记---观察者模式Observer pattern(Java版)
一、场景网站上,很多人订阅了“NBA主题”新闻,,当有这个主题新闻时,就会将这些新闻发给所有订阅的人。(我们可以把多个订阅者、客户称之为观察者;需要同步给多个订阅者的数据封装到对象中,称之为目标。)二、实质广播机制 观察者主要用于1:N的通知。当一个对象(目标对象Subject或Objservable)<消息发布>的状态变化时,他需要及时告知一系列对象(观察者对象Observer)<消息订阅>,令原创 2015-03-14 16:30:03 · 978 阅读 · 0 评论 -
设计模式学习笔记---策略模式strategy pattern(Java版)
一、场景 市场人员接到单之后的报价策略,比如普通用户或老客户,还是小批量或大批量。 二、实质 策略模式对应于解决某一个问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问题,同时可以方便的更换算法或者增加新的算法。并且由客户端决定调用那个算法。(分离算法,选择实现。) 三、示例1、未使用策略模式package com.lgd.strategy;/** * 实现容易,原创 2015-03-13 22:51:19 · 1031 阅读 · 0 评论 -
设计模式学习笔记---备忘录模式memento pattern(Java版)
一、场景 录入大批人员资料,当正在录入当前人资料时,发现上一个人录错了 此时需要恢复上一个人的资料,再进行修改。 Word文档编辑时,忽然电脑死机或断电,再打开时可以看到word 提示你恢复到以前的文档。 管理系统中,公文撤回功能。公文发送出去后,想撤回来。二、核心 保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态。 结构: 一源发器类originator 一备忘原创 2015-04-29 10:26:13 · 995 阅读 · 0 评论 -
设计模式学习笔记---装饰模式decorator(Java版)
一、场景车的功能二、实质动态的为一个对象增加新的功能,是一种用于代替继承的技术,无须通过继承增加新的子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。三、实现细节抽象构件角色具体构件角色装饰角色具体装饰角色四、示例package com.lgd.decorator;/** * 抽象组件原创 2015-03-03 21:43:06 · 1427 阅读 · 0 评论 -
设计模式学习笔记---单例模式(Java版)
GOF23(Group of four)创建型模式单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式。结构型模式适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式。行为型模式模板方法模式,命令模式,迭代器模式,观察者模式,中介者模式,备忘录模式,解释器模式,状态模式,策略模式,职责链模式,访问者模式。单例模式核心原创 2015-01-09 09:30:26 · 1803 阅读 · 0 评论 -
设计模式学习笔记--解释器模式Interpreter与访问者模式Visitor(Java版)
解释器模式介绍:一种不常用的设计模式。用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计。当我们需要开发一种新的语言时,可以考虑使用解释器模式。尽量不要使用解释器模式,后期维护会有很大麻烦。在项目中,可以使用JRuby,Groovy、Java的js引擎来替代解释器的作用,弥补Java语言的不足。开发场景:EL表达式的处理原创 2015-03-05 21:03:01 · 934 阅读 · 0 评论 -
设计模式学习笔记---迭代器模式iterator pattern(Java版)
一、实质提供一种可以遍历聚合对象的方式。又称游标模式聚合对象:存储数据迭代器:遍历数据二、示例原创 2015-03-04 21:52:38 · 1000 阅读 · 0 评论 -
设计模式学习笔记--命令模式command pattern(Java版)
一、实质将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志以及支持可撤销的操作,也称之为动作ACtion模式、事物transaction模式。二、结构Command抽象命令类ConcreteCommand具体命令类Invoke调用者/请求者请求的发送者,它通过命令对象来执行请求。一个调用者并不需要在设计时确定其接收者,因此它只与抽原创 2015-03-05 17:11:03 · 1004 阅读 · 0 评论 -
设计模式学习笔记---建造者模式(Java版)
一、场景建造一个复杂的产品。二、本质将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 [构建与表示分离,同构建不同表示]与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者最后得到产品。即建造模式可以强制实行一种分步骤进行的建造过程。建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只原创 2015-02-28 17:37:17 · 788 阅读 · 0 评论 -
设计模式学习笔记---适配器模式adapter(Java版)
结构型模式(从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题。)适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式。适配器模式一、场景ps2 to usb 转接线二、本质将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作。原创 2015-03-02 19:53:49 · 744 阅读 · 0 评论 -
设计模式学习笔记---原型模式prototype(Java版)
一、场景克隆羊多利二、本质通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式节约时间。就是java中的克隆技术,以某个对象为原型,复制出新的对象。新的对象具备原型对象的特点。效率高,避免了重新执行构造过程的步骤。克隆类似于new,但不同于new.new创建新的对象属性采用的是默认值。克隆出的对象的属性值完全和原型对象相同。并且克隆出的新对象不会影响原型对象。原创 2015-02-28 22:21:03 · 1130 阅读 · 0 评论 -
设计模式学习笔记---桥接模式bridge(Java版)
一、场景商场系统中常见的商品分类,例如电脑。二、实质处理多重继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。三、示例1、没有使用桥接方式package com.lgd.nobridge;public interface ComputerNoBridge { void sale();}cla原创 2015-03-03 11:18:53 · 952 阅读 · 0 评论 -
设计模式学习笔记---外观模式Facade pattern(Java版)
迪米特法则(最少知识原则):一个软件实体应当尽可能少的与其他实体发生相互作用。一、场景注册公司流程二、实质为子系统提供一个统一的入口,封装子系统的复杂性,便于客户端调用。三、示例package com.lgd.facade;public interface 工商局 { void checkName(); //核名}cl原创 2015-03-04 10:57:38 · 1018 阅读 · 0 评论 -
设计模式学习笔记---组合模式composite(Java版)
一、场景把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。二、实质抽象构建角色:定义了叶子节点和容器构件的共同点叶子构建角色:无子节点容器构建角色:有容器特征,可以包含子节点三、工作流程组合模式为处理树形结构提供了完美的解决方案,描述了如何将容器和叶子进行递归组合,使得用户在使用时可以一致性的对待容器和叶子。当容器对象的指定方原创 2015-03-03 17:45:08 · 756 阅读 · 0 评论 -
设计模式学习笔记---享元模式FlyWeight pattern(Java版)
一、场景内存属于稀缺资源,不要随便浪费。如果有很多个完全相同或相似的对象,我们可一通过享元模式,节省内存。围棋软件设计每个围棋棋子都是一个对象,有如下属性:可以共享(内部状态):颜色形状大小不可以共享(外部状态):位置二、实质享元模式以共享的方式高效地支持大量细粒度对象的重用。享元对象能做到共享的关键是区分内部状态和外部状态。内部状态:可以共享,原创 2015-03-04 14:46:21 · 1058 阅读 · 0 评论 -
设计模式学习笔记---职责链模式chain of responsibility(Java版)
创建型模式:关注对象的创建工程。结构型模式:关注对象和类的组织。行为型模式:关注系统中对象的相互交互研究系统在运行时对象之间的相互通信和协作,进一步明确对象的职责。原创 2015-03-04 15:51:37 · 992 阅读 · 0 评论 -
设计模式学习笔记---代理模式Proxy(Java版)
一、场景演员的经纪人二、实质通过代理控制对对象的访问。可以详细控制访问某个(某类)对象的方法,在调用这个方法之前做前置处理,调用这个方法后做后置处理。AOP的核心实现机制。三、角色抽象角色代理角色真实角色三、示例原创 2015-03-02 22:30:00 · 1337 阅读 · 0 评论