JAVA设计模式
清冷的月光
这个作者很懒,什么都没留下…
展开
-
创建型模式之原型模式
原型模式是创建型模式的一种,通过克隆原型实例以创建新的对象。 原型模式不需调用构造方法创建对象,与单例模式冲突。使用原型模式需明晰以下三点: 1. clone()是Object类的一个protected方法。 2. 若一个类实现了Cloneable接口,则支持在原有实例的基础上clone新的实例。 3. Object的clone操作只克隆基本数据类型(浅拷贝),其它容器类数据按需求自行原创 2017-09-05 10:51:36 · 160 阅读 · 0 评论 -
行为模式之备忘录模式
备忘录(Memento)获取并保存一个对象(原发器)的内部状态,并在需要的时候将该对象恢复到之前保存的状态。备忘录模式包含三部分:Memento 备忘录,存储Originator的内部状态Originator 原发器,创建备忘录以记录当前状态,及使用备忘录恢复状态Caretaker 负责人,负责保存备忘录Mementoclass Memento { ...原创 2018-03-16 14:16:18 · 146 阅读 · 0 评论 -
行为模式之观察者模式
观察者(Observer)用于对象间一对多的状态依赖型交互,也称为发布-订阅(publish-subscribe)模式。观察者模式包含四部分:Subject 被观察的目标,提供注册和删除观察者的接口Observer 观察者,定义目标改变时所需响应的更新接口ConcreteSubject 具体目标ConcreteObserver 具体观察者Subject...原创 2018-03-16 16:46:06 · 160 阅读 · 0 评论 -
行为模式之状态模式
状态(State)模式根据对象所处状态的不同而改变对象的行为。状态模式包含三部分:Context 提供客户需求的接口,持有ConcreteState对象以定义当前状态State 为不同状态的子类声明公共接口ConcreteState 每个子类实现一个与Context状态相对应的行为Stateabstract class State { abs...原创 2018-03-22 15:58:23 · 124 阅读 · 0 评论 -
行为模式之策略模式
策略(Strategy)模式将不同的算法策略封装为不同对象,从客户端程序中分离出来而独立变化。策略模式包含三部分:Strategy 定义所有算法的公共接口ConcreteStrategy 某种具体算法的实现Context 客户端程序,持有一个ConcreteStrategy实例Strategyinterface Strategy { void o...原创 2018-03-22 16:29:24 · 149 阅读 · 0 评论 -
行为模式之模板方法模式
模板方法(Template Method)普遍存在于抽象类中,它用一些抽象的方法定义一个算法,而将这些抽象方法的具体实现放到子类中。模板方法包含两部分:AbstractClass 实现一个模板方法,从而定义一个算法的骨架ConcreteClass 实现模板方法中抽象的原语操作AbstractClassabstract class AbstractClass...原创 2018-03-22 17:11:34 · 131 阅读 · 0 评论 -
行为模式之职责链
职责链将候选对象连成一条链,在该链上传递请求,直到链上某一对象处理请求。 该请求的接受者为隐式接收者。为了在链上转发该请求,链上对象须有一致的处理请求及访问后继对象的接口。职责链分为三部分:Handle 处理请求的接口ConcreteHandle 处理辖内请求或访问后继对象Client 提交请求的客户Handleabstract class H...原创 2018-03-13 16:40:02 · 115 阅读 · 0 评论 -
行为模式之命令模式
命令模式(Command)将请求封装成一个对象。 命令模式又可称为动作(Action),事务(Transaction)。命令模式包含五部分:Comand 执行操作的接口,如Execute()ConcreteComnand 命令的具体实现,绑定接收者,并调用接收者相应操作,以实现ExecuteClient 命令的装配者,创建一个ConcreteComnand对象,并指...原创 2018-03-14 13:45:48 · 148 阅读 · 0 评论 -
行为模式之解释器模式
解释器模式(Interpreter)为某一特定语言定义文法,并为该语言的特定上下文提供解释。解释器模式包含五部分:AbstractExpression 声明一个抽象的解释操作TerminalExpression 终结符表达式,实现终结符的解释操作NonterminalExpression 非终结符表达式,实现非终结符的解释操作Context 解释器之外的全局信息Cli...原创 2018-03-14 16:11:26 · 141 阅读 · 0 评论 -
行为模式之访问者模式
访问者(Visitor)模式将某对象结构中各元素的操作从对象结构中分离出来。从而可以通过改变访问者,而实现作用于该对象结构的新操作。访问者模式包含四部分:VisitorConcreteVisitorElementConcreteElementVisitorpublic interface Visitor { void visitElementA...原创 2018-04-03 17:15:49 · 98 阅读 · 0 评论 -
行为模式之中介者模式
中介者模式(Mediator)使各同事类通过中介者进行交互,而不需要各同事类显式地互相引用。中介者包含三部分:Mediator 中介者,定义与各同事通信的接口ConcreteMediator 协调并维护各同事类Colleague 同事类,与中介者对象通信Mediatorabstract class Mediator { protected Col...原创 2018-03-16 11:51:32 · 152 阅读 · 0 评论 -
行为模式之迭代器模式
迭代器模式(Iterator)提供了顺序访问一个聚合对象中各个元素的方法。 当遍历算法由聚合本身定义,而迭代器仅用于存储当且位置时,这种迭代器可称之为游标(Cursor)。迭代器模式包含四部分:Iterator 定义遍历元素的接口ConcreteIterator 迭代器的具体实现,跟踪当前位置Aggregate 聚合,定义迭代器的创建接口ConcreteAggre...原创 2018-03-15 11:02:10 · 141 阅读 · 0 评论 -
结构型模式之代理模式
代理模式(Proxy,又称Surrogate)为其它对象提供代理,以接管客户对实际对象的访问。代理模式包含三个部分:Subject 实际对象和代理的公共接口RealSubject 实际对象Proxy 代理,持有RealSubject的引用,并接管对RealSubject的访问原创 2017-12-29 17:11:51 · 126 阅读 · 0 评论 -
创建型模式之工厂模式
当创建一个对象需要依赖多个其它对象或条件,不能简单一句new完成时,可通过工厂模式封装繁杂的实例创建过程。 通常认为工厂模式包含简单工厂模式(静态工厂模式),工厂方法模式,抽象工厂模式。简单工厂模式(静态工厂模式)产品接口及实现类:interface Product { public String getProductName();}class Product1 implement原创 2017-09-13 17:25:22 · 153 阅读 · 0 评论 -
创建型模式之单例模式
单例模式是创建型模式的一种,实现单例的类将构造方法私有化,对外提供唯一的实例。饿汉模式顾名思义,饿汉模式在类加载的时候,即迫不及待地创建实例懒汉模式懒汉,在需要的时候才会创建实例private xxx静态内部类枚举模式原创 2017-09-01 17:14:14 · 185 阅读 · 0 评论 -
创建型模式之建造者模式(生成器模式)
建造者模式,或称之为生成器模式,是将对象的构造过程从对象的各种表示中分离出来。 从而通过建造者组合不同的对象细节,实例化出对象的不同表示。建造者模式和工厂模式的差异:工厂模式:将不同产品类的实例化过程整合成不同的工厂,并不关注某一工厂内的具体构造过程。 建造者模式:整合同一个产品类不同的实例化过程(多个构造参数组合成不同的对象表示),构造不同的对象表示。原创 2017-09-14 19:25:28 · 318 阅读 · 1 评论 -
结构型模式之适配器模式
适配器(Adapter),又被称为包装器(Wrapper),将一个类的接口转换成另一个接口,使该类兼容另一个工作场景。原创 2017-09-19 20:03:21 · 263 阅读 · 0 评论 -
结构型模式之桥接模式
桥接模式原创 2017-09-27 16:51:17 · 171 阅读 · 0 评论 -
结构型模式之组合模式
组合模式原创 2017-12-11 20:29:34 · 167 阅读 · 0 评论 -
结构型模式之装饰模式
装饰模式Decorator,也可称为包装器Wrapper。 (Adapter和Decorator均可称为包装器Wrapper,但Adapter是包装接口,Decorator是包装具体对象)装饰模式包含以下四部分:Component 对象接口ConcreteComponent 具体对象,即被装饰者Decorator 装饰者接口,与Component接口一致,持有Compon原创 2017-12-21 14:53:55 · 154 阅读 · 0 评论 -
结构型模式之外观模式
外观模式(Facade)提供了一个高层的简易接口,统筹复杂系统底层各个具体子系统的功能。 从而客户可以通过Facade接口使用复杂系统,降低客户和子系统的耦合。外观模式包含以下两部分:Facade 统筹各个子系统的功能,将客户请求分派给各个子系统Subsystem classes 各个子系统,处理Facade发送的请求原创 2017-12-21 16:10:04 · 124 阅读 · 0 评论 -
结构型模式之享元模式
享元模式(Flyweight)将对象的状态分为内部状态(存储于对象内部)和外部状态(取决于对象所在场景),对具有相同内部状态的对象进行共享,从而节约内存。 享元模式的实际应用包括Java String类,数据库连接池,线程池等。享元模式包含以下四部分:Flyweight 享元接口ConcreteFlyweight 实现Flyweight的具体子类,存储内部状态并独立于外部状态Unsha原创 2017-12-26 15:59:50 · 165 阅读 · 0 评论 -
设计模式汇总
创建型模式:单例模式,原型模式,工厂模式,建造者模式结构型模式:适配器模式,桥接模式,组合模式,装饰模式,外观模式,享元模式,代理模式行为型模式:职责链模式,命令模式,解释器模式,迭代器模式,中介者模式,备忘录模式,观察者模式,状态模式,策略模式,模板方法模式,访问者模式...原创 2018-04-03 17:30:37 · 108 阅读 · 0 评论