![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
慢慢嚼
这个作者很懒,什么都没留下…
展开
-
解释器模式
定义 给定一个语言,定义她的问法的一种文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子结构与说明 AbstractExpression : 定义解释器的接口 TerminalExpression : 终结符解释器,用来实现语法规则中和终结符相关的操作,相当于组合模式中的叶子节点 NonterminalExpression : 非终结符解释器,用来实现语法规则中原创 2015-02-25 19:30:13 · 342 阅读 · 0 评论 -
几个工厂模式和门面模式
设计模式中最搞的就是简单工厂模式、抽象工厂模式、工厂方法·和门面模式 先看一下他们的定义吧: 简单工厂: 定义 : 提供一个创建对象实例的功能,而无需关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。 结构与说明: Api:定义客户需要的功能接口原创 2015-02-25 21:27:41 · 1667 阅读 · 0 评论 -
组合模式
定义 将对象组合成树形结构以表示“整体-部分”的层次结构。组合模式使得用户对的单个对象和组合对象的使用具有一致性。结构与说明 Component : 抽象的属性组件 Leaf : 叶子节点对象 Composite : 组合对象节点 Client : 客户端,装配整个树实现//透明模式的组合模式public abstract Component{ public原创 2015-02-25 14:32:59 · 366 阅读 · 0 评论 -
策略模式
定义 定义一系列的算法,把他们一个个封装起来,并且使他们可相互替代。结构与说明 Strategy : 策略接口 ConcreteStrategy : 具体的策略 Context : 上下文,与具体的策略进行交互实现 在spring中,抽象策略AopProxy,两种策略实现Cglib2AopProxy、jdkDynamicAopProxy,ProxyFactoryBean代原创 2015-02-25 10:19:58 · 336 阅读 · 0 评论 -
状态模式
定义 允许一个对象在其内部状态改变时改变他的行为,对象看起来似乎修改了它的类。结构和说明 State : 状态接口 ConcreteState : 具体状态接口 Context : 上下文,java实现 个人比较喜欢电梯的那个例子和模拟工作流的例子(这两个很经典),这个使用电梯的例子 : public abstract class LiftState{ pro原创 2015-02-24 22:54:49 · 305 阅读 · 0 评论 -
命令设计模式
定义 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作结构与说明 Command : 抽象的命令接口 ConcreteCommand : 具体的命令实现 Receiver : 命令的接受者,真正执行命令的对象 invoker : 调用者,持有命令和命令的触发者 Client : 组装命令对象和接受者原创 2015-02-25 10:37:04 · 297 阅读 · 0 评论 -
生成器模式
定义 讲一个复杂对象的构建与它的表示相分离,使得同样的构建过程可以创建不同的表示。结构与说明 Builder: 生成器接口,定义创建一个Product对象所需要的各个部件的操作 ConcreteBuilder : 具体的生成器,用于实现各个部件的创建,并负责组装Product Director : 指导者,主要用于统一构建过程,管理Builder接口 Product :原创 2015-02-25 15:50:57 · 357 阅读 · 0 评论 -
模板方法
定义 定义一个操作中的算法的框架,而将一些步骤延迟到子类中。模版方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。结构和说明 AbstractClass:抽象类。用来定义算法骨架和原语操作。还提供算法中的通用的实现。 ConcreteClass : 具体实现类。用来实现算法骨架中的某些步骤,完成和特定子类相关的功能。 例子: 笔者在实现爬虫抓去的代码中,原创 2015-02-24 17:29:21 · 447 阅读 · 0 评论 -
适配器模式
定义 将一个类的接口编程客户端所期待的另一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够在一起工作结构与说明 Target : 目标接口 Adaptee : 源角色 Adapter : 适配器,实现目标接口实例这个不细讲适配器模式。在java I/O 库中,就有大量的实例,其中,InputStreamReader实现了Reader的接口,但是需要传入InputStr原创 2015-02-25 09:12:27 · 356 阅读 · 0 评论 -
桥梁模式
定义 将抽象部分与她的实现部分分离,使他们都可以独立的变化。结构与说明 Abstraction : 抽象化的角色。定义出该角色的行为,同时保存一个对实现化角色的引用 RefinedAbstraction : 修正抽象化角色。对抽象化角色的行为进行修正 Implementor:实现化角色,定义为接口或抽象,定义角色必须的行为和属性 ConcreteImplementor:具原创 2015-02-25 15:05:30 · 343 阅读 · 0 评论 -
中介者模式
定义 用一个中介对象来封装一系列的对象交互。中介者使的各个对象不需要显示地相互引用,从而时期耦合松散,而且可以独立的改变他们之间的交互。结构与说明 Mediator : 中介者接口 ConcreteMediator : 具体的中介者对象 Colleague : 同事类的定义,通常定义为抽象类,实现对象的公共功能(比如,对中介者的持有)实现//常规的实现方式,省略日志记录/*原创 2015-02-25 13:56:28 · 425 阅读 · 0 评论 -
装饰器模式
定义 动态的给对象添加一些额外的职责,就增加功能来说,装饰器模式比生成子类更为灵活。结构与说明 Component : 组件对象的接口 ConcreteComponent : 具体的组件对象 Decorator : 所有装饰器的父类 ConcreteDecorator : 具体的装饰器 实现 个人比较喜欢奶茶组合计费的例子(见书<<大话设计模式>>),这里还是看ja原创 2015-02-25 09:51:19 · 330 阅读 · 0 评论 -
原型模式
定义 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象结构与说明 Prototype : 申明一个克隆自身的接口 ConcretePrototype : 实现Prototype接口的类 Client : 使用原型的客户端实现 在java的世界中,有一个Cloneable的接口来实现原型,代码如下 : public class ConcretePrototyp原创 2015-02-25 08:53:20 · 343 阅读 · 0 评论 -
责任链
定义 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。结构与说明 Handler : 定义职责的接口(定义处理请求的方法、后继链) ConcreteHandler :实现职责的类(处理请求和继续转发) Client : 指责链的客户端,将请求提交给链上的具体对象,由职责链处理。实现原创 2015-02-25 13:09:53 · 403 阅读 · 0 评论 -
享元模式
定义 运用共享技术有效的支持大量细粒度的对象结构与说明 Flyweight : 享元接口 ConcreteFlyweight : 具体的享元独享 UnSharedConcreteFlyweight : 非共享的享元实现对象 FlyweightFactory : 享元工厂,用来创建并管理共享的享元对象 Client : 客户端实现 具体的例子就不给了,再享元模式原创 2015-02-25 16:24:46 · 373 阅读 · 0 评论 -
学习设计模式的书籍
终于把23中设计模式的blog写完了,这里把我学习设计模式的书籍列一下: * 《设计模式之禅》 * 《研读设计模式》 * 《大话设计模式》 * 《Head First 设计模式》 * 《设计模式 可复用面向对象软件的基础》 * 《深入分析java Web技术内幕》,讲解开源框架的时候,附带了一些设计模式 * 《深入剖析Tomcat》作为开源框架,其本身肯定少原创 2015-02-25 22:02:52 · 674 阅读 · 0 评论 -
访问者模式
定义 表示一个作用于某个对象结构的各元素的操作。他是你可以在不改变元素的类的前提下定义作用于这些元素的操作结构与说明 Visitor : 访问者接口,为所有的访问者申明一个visit的方法,用来代表为对象结构添加的功能 ConcreteVisitor : 具体的访问者实现对象,实现visit中的方法 Element : 抽象元素对象,即被访问的对象,通常会回调访问者的真实功能,原创 2015-02-25 20:20:06 · 389 阅读 · 0 评论 -
观察者模式
定义 定义对象间一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 常用结构 Subject : 目标对象,[一般是接口] Observer:定义观察者的接口 ConcreteSubject : 具体的目标对象 ConcreteObserver : 观察者的具体实现实现 一般在Subject中维护这一个Observer原创 2015-02-24 22:09:20 · 401 阅读 · 0 评论 -
6大设计模式
6大设计模式单一职责原则里氏替换原则依赖倒置原则接口隔离原则迪米特法则开闭原则原创 2015-02-24 15:13:43 · 493 阅读 · 0 评论 -
单例模式
简述关于单例模式早已经是老生常谈,在应聘过程中,也多次被问及,很多都是关于性能的问题。优点单例,由于只有一个实例,减少了内存开销,作为系统的全局访问点,优化了资源访问。实现 在实现过程中,一般为饿汉和懒汉模式两种 饿汉模式最简单,所谓饿了就吃,所以,在饿汉模式中,单例实例是在定义的时候,就已经加载的,像这样 : public class Singleton{ priva原创 2015-02-24 16:27:57 · 352 阅读 · 0 评论 -
迭代器
定义 提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示结构与说明 Iterator : 迭代器接口 ConcreteIterator :具体的迭代器是西安对象 Aggregrate : 聚合对象,定义创建相应迭代器对象的接口 ConcreteAggregrate : 具体的聚合对象。实现创建相应的迭代器对象实现 由于迭代器的设计模式太常见原创 2015-02-25 19:41:25 · 400 阅读 · 0 评论 -
代理模式
定义 为其他对象提供一种代理以控制对这个对象的访问作用 为真实类提供角色预处理消息、过滤消息、消息转发、时候消息处理; 比如 : 虚代理 , 远程代理 , 写时复制 , Cache代理 , 防火墙代理 , 同步代理 , 智能指引 ,保护代理 。常用结构 Subject :目标接口。 RealSubject : 具体的目标对象 Proxy : 代理对象原创 2015-02-24 20:23:02 · 385 阅读 · 0 评论 -
备忘录模式
定义 在不破坏封装行的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将对象恢复到原先保存的状态。结构与说明 Memento : 备忘录。用来存储源发器对象的内部状态 Originator : 源发器。使用备忘录保存某个时刻源发器自身的状态,也可以使用备忘录恢复内部状态 Caretaker : 备忘录管理者,负责存储备忘录对象,以及对备忘录对象的检查原创 2015-02-25 16:50:50 · 416 阅读 · 0 评论