Design-Pattern
文章平均质量分 88
Ricky_Fung
「Stay hungry. Stay foolish.」
展开
-
JAVA设计模式 —行为模式总结
行为模式主要是责任和算法的抽象化。行为模式不仅仅是关于类和对象的,而且是关于它们之间的相互作用的。行为模式分为类的行为模式和对象的行为模式两种。类的行为模式 类的行为模式使用继承关系在几个类之间分配行为。对象的行为模式 对象的行为模式则使用对象的聚合来分配行为。行为模式包括:策略模式模板方法模式观察者模式迭代器模式责任链模式命令模式备忘录原创 2013-01-07 16:12:25 · 2254 阅读 · 0 评论 -
JAVA设计模式 — 原型模式(Prototype)
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型:对象创建型模式类图:原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用c原创 2013-01-05 17:02:46 · 2141 阅读 · 0 评论 -
JAVA设计模式 —模板设计模式(Template Method)
定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法中的某些特定步骤。类型:类行为型模式类图:AbstractClass:抽象类。用来定义算法骨架和原语操作,具体的子类可以通过重定义这些原语操作来实现一个算法的各个步骤。在这个类里面,还可以提供算法中通用的实现。ConcreteClass:具体原创 2013-01-06 09:49:09 · 1554 阅读 · 0 评论 -
JAVA设计模式—观察者模式(Observer)
定义:定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。类型:对象行为型模式别名:发布—订阅(Publish - Subscribe)类图: 在软件系统中经常会有这样的需求:如果一个对象的状态发生改变,某些与它相关的对象也要随之做出相应的变化。比如,我们要设计一个右键菜单的功能,只要在软件的有原创 2013-01-06 11:53:04 · 1600 阅读 · 0 评论 -
JAVA设计模式—策略模式(Strategy)
定义:定义一系列算法,将它们一个个封装起来,并且使他们之间可以相互替换。本模式使得算法可以独立于使用它的客户而变化。类型:对象行为型模式类图: 策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。在前面说过的行为类模式中,有一种模式也是关注对算法的封装——模版方法模式,对照类图可以看到,策略模式与模版方原创 2013-01-06 17:31:34 · 1427 阅读 · 0 评论 -
JAVA设计模式—责任链模式(Chain Of Responsibility)
定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。类型:对象行为型模式类图: 首先来看一段代码:[java] view plaincopypublic void test(int i, Request原创 2013-01-07 14:13:34 · 1877 阅读 · 0 评论 -
JAVA设计模式—迭代器模式(Iterator)
定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部细节。类型:对象行为型模式类图: 如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧:[java] view plaincopypublic static void原创 2013-01-07 11:19:49 · 1987 阅读 · 0 评论 -
JAVA设计模式—访问者模式(Visitor)
定义:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。类型:对象行为型模式类图: 访问者模式可能是行为类模式中最复杂的一种模式了,但是这不能成为我们不去掌握它的理由。我们首先来看一个简单的例子,代码如下:[java] view plaincopyclas原创 2013-01-06 15:22:57 · 1688 阅读 · 1 评论 -
JAVA设计模式—命令模式(Command)
定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。类型:对象行为型模式类图:命令模式的结构 顾名思义,命令模式就是对命令的封装,首先来看一下命令模式类图中的基本结构:Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execu原创 2013-01-06 16:37:23 · 1332 阅读 · 0 评论 -
JAVA设计模式—解释器模式(Interpreter)
定义:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。类型:类行为型模式类图: 解释器模式的结构抽象解释器:声明一个所有具体表达式都要实现的抽象接口(或者抽象类),接口中主要是一个interpret()方法,称为解释操作。具体解释任务由它的各个实现类来完成,具体的解释器分别由终结符解释器TerminalEx原创 2013-01-07 11:40:22 · 2184 阅读 · 0 评论 -
JAVA设计模式—备忘录模式(Memento)
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态类型:对象行为型模式类图: 我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用C原创 2013-01-07 14:47:55 · 1364 阅读 · 0 评论 -
JAVA设计模式—状态模式(State)
定义:允许一个对象在其内部状态发生改变时改变它的行为。对象看起来似乎修改了它的类。类型:对象行为型模式类图:State模式主要解决的是在开发中时常遇到的根据不同的状态需要进行不同的处理操作的问题,而这样的问题,大部分人是采用switch-case语句 进行处理的,这样会造成一个问题:分支过多,而且如果加入一个新的状态就需要对原来的代码进行编译。Sta原创 2013-01-07 15:54:09 · 1838 阅读 · 0 评论 -
JAVA设计模式—中介者模式(Mediator)
定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。类型:对象行为型模式类图:中介者模式的结构 中介者模式又称为调停者模式,从类图中看,共分为3部分: 抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并原创 2013-01-06 10:52:27 · 1422 阅读 · 0 评论 -
JAVA设计模式 — 简单工厂模式
定义:定义一个用于创建对象的工厂类,让它决定实例化哪一个子类。类型:对象创建型模式简单工厂模式: 简单工厂模式是工厂方法模式的一个特例,通过简单工厂方法模式的类图可以看到,工厂方法模式有三个要素:1、工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个原创 2013-01-05 15:19:04 · 1590 阅读 · 0 评论 -
JAVA设计模式 — 抽象工厂模式(Abstract Factory)
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。类型:对象创建型模式类图:抽象工厂模式与工厂方法模式的区别 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结原创 2013-01-05 15:37:17 · 2068 阅读 · 0 评论 -
JAVA设计模式 —创建型模式总结
创建型模式包括:工厂方法模式:提供一个简单的决策类,根据条件生成产品。抽象工厂模式:提供一个创建并返回一系列产品的接口。单例模式:某个类只能有一个实例。提供一个全局访问点。(可拓展到有限个实例)建造者模式:将一个复杂对象的构建于呈现分开,以便根据不同需要创建不同的形式。原型模式:先实例化一个类,然后克隆或者拷贝该类来构建新的实例。可以用共有方法进一步修改这些原创 2013-01-07 16:14:40 · 1335 阅读 · 0 评论 -
JAVA设计模式(18) —适配器(Adapter)模式
定义:将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。类型:类对象结构型模式类图:在GoF的设计模式中,对适配器模式讲了两种类型,类适配器模式和对象适配器模式。由于类适配器模式通过多重继承对一个接口与另一个接口进行匹配,而C#、java等语言都不支持多重继承,因而这里只是介绍对象适配器。原创 2013-01-07 18:14:32 · 2347 阅读 · 2 评论 -
JAVA设计模式(19) —桥接(Bridge)模式
定义:将抽象部分与它的实现部分分离,使它们可以独立的变化。类型:对象结构型模式类图:桥接模式的结构Abstraction :抽象类的接口,维护一个指向Implementor类型对象的指针,在本例中为 IPluginPlatform。RefinedAbstraction :扩充Abstraction定义的接口,在本例中为 PluginVersion原创 2013-01-08 14:59:27 · 1548 阅读 · 0 评论 -
JAVA设计模式(20) —组合(Composite)模式
定义:将对象组合成树形结构以表示 “部分 — 整体” 的层次结构。Composite模式使得用户对单个对象和组合对象的使用具有一致性。类型:对象结构型模式类图:组合模式的结构抽象构件角色(component):是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。这个原创 2013-01-08 16:14:35 · 1654 阅读 · 0 评论 -
JAVA设计模式(21) —装饰(Decorator)模式
定义:动态的给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。类型:对象结构型模式别名:包装模式(Wrapper)类图:Decorator装饰模式是一种结构型模式,它主要是解决:“过度地使用了继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的原创 2013-01-08 17:20:44 · 1797 阅读 · 0 评论 -
JAVA设计模式(23) —享元(FlyWeight)模式
定义:运用共享技术有效地支持大量细粒度的的对象。类型:对象结构型模式类图:FlyWeight模式的结构抽象享元角色(Flyweight):描述一个接口,通过这个接口可以Flyweight可以接受并作用于外部状态。具体享元(ConcreteFlyweight)角色:实现Flyweight接口,并为内部状态(如果有的话)增加存储空间。Co原创 2013-01-09 17:18:57 · 1858 阅读 · 0 评论 -
JAVA设计模式(22) —外观(Facade)模式
定义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。类型:对象结构型模式类图:Facade模式的结构外观角色(Facade):是模式的核心,他被客户client角色调用。它知道那些子系统类负责处理请求,并将客户的请求转发给适当的子系统对象。子系统角色(Subsystem原创 2013-01-09 15:10:08 · 1736 阅读 · 0 评论 -
JAVA设计模式(24) —代理(Proxy)模式
定义:为其他对象提供一种代理以控制对这个对象的访问。类型:对象结构型模式类图:Proxy模式涉及的角色抽象主题角色(Subject):声明了代理主题和真实主题的公共接口,使任何需要真实主题的地方都能用代理主题代替。代理主题角色(Proxy):含有真实主题的引用,从而可以在任何时候操作真实主题。代理主题功过提供和真实主题相同的接口,使它原创 2013-01-09 18:26:13 · 1900 阅读 · 0 评论 -
JAVA设计模式—结构型模式总结
结构型模式描述如何组织类和对象以组成更大的结构。结构型类模式采用继承机制来组合接口和实现,结构型对象模式则采用组合聚合来组合对象以实现新功能,可以在运行时刻改变对象组合关系,具有更大灵活性,故这里只关注结构型对象模式。常见的结构型模式有7种:ABCDFFP(Adapter,Bridge,Composite,Decorator,Façade,Flyweight,Proxy)1.适配器模式(A原创 2013-01-13 22:25:41 · 1533 阅读 · 0 评论 -
JAVA设计模式 — 单例模式(Singleton)
定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。类型:对象创建型模式单例模式应该是23种设计模式中最简单的一种模式了。它有以下几个要素:私有的构造方法私有静态的类自身实例引用以自己实例为返回值的静态的公有的方法 单例模式根据实例化对象时机的不同分为两种:一种是饿汉式单例,一种是懒汉式单例。饿汉式单例在单例类被加原创 2013-01-05 11:26:51 · 2099 阅读 · 0 评论 -
JAVA设计模式 — 生成器模式(Builder)
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:对象创建型模式类图:四个要素产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。抽象建造者:引入原创 2013-01-05 16:08:07 · 16293 阅读 · 2 评论 -
JAVA设计模式 —工厂方法模式(Factory Method)
转载:http://blog.csdn.net/zhengzhb/article/details/7348707定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。类型:对象创建型模式类图:工厂方法模式代码[java] view plaincopyinterface原创 2013-01-05 15:22:44 · 1838 阅读 · 0 评论 -
Builder模式总结
模式动机无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、方向盘、发动机等各种部件。而对于大多数用户而言,无须知道这些部件的装配细节,也几乎不会使用单独某个部件,而是使用一辆完整的汽车,可以通过建造者模式对其进行设计与描述,建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部原创 2016-07-06 18:42:36 · 5543 阅读 · 2 评论