设计模式
文章平均质量分 81
BAOLIANG196
这个作者很懒,什么都没留下…
展开
-
设计模式:门面模式(Facade)
门面模式(facade)又称外观模式。GOF在《设计模式》一书中给出如下定义:为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。定义中提到的子系统是指在设计中为了降低复杂性根据一定的规则(比如业务、功能),对系统进行的划分。子系统中封装有一些类。客户程序在使用子系统的时候,可能会像下图一样零乱。 在上面的实现方法中,客户类紧紧地依赖在原创 2016-04-29 18:32:28 · 536 阅读 · 0 评论 -
设计模式:工厂方法模式(Factory Method)
一、引子话说十年前,有一个暴发户,他家有三辆汽车——Benz 奔驰、Bmw 宝马、Audi 奥迪,还雇了司机为他开车。不过,暴发户坐车时总是怪怪的:上Benz 车后跟司机说“开奔驰车!”,坐上Bmw 后他说“开宝马车!”,坐上Audi 说“开奥迪车!”。你一定说:这人有病!直接说开车不就行了?!而当把这个暴发户的行为放到我们程序设计中来时,会发现这是一个普遍存在的现象。幸运的是,这种有病的现象在OO原创 2016-04-14 20:48:42 · 581 阅读 · 1 评论 -
设计模式:组合模式(Composite)
定义与结构组合(Composite)模式的其它翻译名称也很多,比如合成模式、树模式等等。在《设计模式》一书中给出的定义是:将对象以树形结构组织起来,以达成“部分-整体”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。从定义中可以得到使用组合模式的环境为:在设计中想表示对象的“部分-整体”层次结构;希望用户忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象。看下组合模式的组成。原创 2016-04-29 18:49:13 · 534 阅读 · 0 评论 -
设计模式:装饰模式(Decorator )
定义与结构装饰模式(Decorator)也叫包装器模式(Wrapper)。GOF 在《设计模式》一书中给出的定义为:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式相比生成子类更为灵活。让我们来理解一下这句话。我们来设计“门”这个类。假设你根据需求为“门”类作了如下 定义: 现在,在系统的一个地方需要一个能够报警的Door,你来怎么做呢?你或许写一个Door的子类原创 2016-04-30 17:08:28 · 517 阅读 · 0 评论 -
设计模式:观察者模式(Observer)
引子还记得警匪片上,匪徒们是怎么配合实施犯罪的吗?一个团伙在进行盗窃的时候,总有一两个人在门口把风——如果有什么风吹草动,则会立即通知里面的同伙紧急撤退。也许放风的人并不一定认识里面的每一个同伙;而在里面也许有新来的小弟不认识这个放风的。但是这没什么,这个影响不了他们之间的通讯,因为他们之间有早已商定好的暗号。呵呵,上面提到的放风者、偷窃者之间的关系就是观察者模式在现实中的活生生的例子。定义与结构观原创 2016-05-01 14:26:53 · 558 阅读 · 0 评论 -
设计模式:设计模式之概括
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。 From Baidu 百科设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂原创 2016-04-14 20:12:32 · 629 阅读 · 0 评论 -
设计模式:责任链模式(Chain of Responsibility)
引言责任链模式就是“推卸”责任的模式,你的问题在我这里能解决我就解决,不行就把你推给另一个对象。至于到底谁解决了这个问题了呢?我管呢!定义与结构从名字上大概也能猜出这个模式的大概模样——系统中将会存在多个有类似处理能力的对象。当一个请求触发后,请求将在这些对象组成的链条中传递,直到找到最合适的“责任”对象,并进行处理。《设计模式》中给它的定义如下:使多个对象都有机会处理请求,从而避免请求的发送者和接原创 2016-05-01 19:37:26 · 616 阅读 · 0 评论 -
设计模式:模板方法模式(Template)
定义与结构模板方法(Template Method)模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。这里的算法的结构,可以理解为你根据需求设计出来的业务流程。特定的步骤就是指那些可能在内容上存在变数的环节。可以看出来,模板方法模式也是为了巧妙解决变化对系统带来的影响而设计的。使用模板方法使系统扩展性增强,最小化了变化对系统的原创 2016-05-02 14:54:37 · 515 阅读 · 0 评论 -
设计模式:建造者模式(Builder)
定义与结构GOF 给建造模式的定义为:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。这句话说得很抽象,不好理解,其实它的意思可以理解为:将构造复杂对象的过程和组成对象的部件解耦。就像攒电脑一样,不管什么品牌的配件,只要兼容就可以装上;同样,一样的配件,可以有好多组装的方式。这是对降低耦合、提高可复用性精神的一种贯彻。当要生成的产品有复杂的内部结构——比如由多个对象组成;而原创 2016-04-21 19:03:10 · 538 阅读 · 1 评论 -
设计模式:抽象工厂模式(Abstract Factory)
这篇博客主要讲一下抽象工厂模式先来认识下什么是产品族: 位于不同产品等级结构中,功能相关联的产品组成的家族。还是让我们用一个例子来形象地说明一下吧。 图中的BmwCar 和BenzCar 就是两个产品树(产品层次结构);而如图所示的BenzSportsCar 和BmwSportsCar 就是一个产品族。他们都可以放到跑车家族中,因此功能有所关联。同理BmwBussinessCar 和BenzSpo原创 2016-04-14 21:01:46 · 543 阅读 · 0 评论 -
设计模式:单例模式(Singleton)
单例对象(Singleton)是一种常用的设计模式。在GOF书中给出的定义为:保证一个类仅有一个实例,并提供一个访问他的全局访问点。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。3、有些类如交易所的核心交易引擎,控制着交易原创 2016-04-14 21:59:56 · 595 阅读 · 1 评论 -
设计模式:访问者模式(Visitor)
定义与结构访问者模式,顾名思义使用了这个模式后就可以在不修改已有程序结构的前提下,通过添加额外的“访问者”来完成对已有代码功能的提升。《设计模式》一书对于访问者模式给出的定义为:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。从定义可以看出结构对象是使用访问者模式必须条件,而且这个结构对象必须存在遍历自身各个对象的方法。这便类似于java 中原创 2016-04-26 19:29:27 · 471 阅读 · 0 评论 -
设计模式:中介者模式(Mediator)
定义与结构中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。GOF 给调停者模式下的定义是:用一个中介类对象来封装一系列的对象交互。调停者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单点来说,将原来两个直接引用或者原创 2016-04-19 17:56:30 · 656 阅读 · 1 评论 -
设计模式:策略模式(Strategy)
转自:http://blog.csdn.net/jungle_hello定义策略模式(Strategy)属于对象行为型设计模式,主要是定义一系列的算法,把这些算法一个个封装成拥有共同接口的单独的类,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。这里的算法不要狭义的理解为数据结构中算法,可以理解为不同的业务处理方法。这种做法会带来什么样的好处呢? 它将算法的使用转载 2016-04-19 14:29:37 · 676 阅读 · 0 评论 -
设计模式:代理模式(Proxy)
转自于:http://blog.csdn.net/jungle_hello/article/details/51173882定义与结构其实每个模式名称就表明了该的作用,代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候会去找中介为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉人去帮你做,此处代理就是这意思。再如,我们有的时候想要打官司,我们需要请律师,因为律转载 2016-04-18 18:31:44 · 468 阅读 · 0 评论 -
设计模式:命令模式(Command)
定义与结构命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。《设计模式》中命令模式的定义为:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。命令模式很好理解,举个例子,司令原创 2016-04-17 17:53:43 · 783 阅读 · 1 评论 -
设计模式:桥接模式(Bridge)
定义与结构GOF 在《设计模式》中给桥接模式的定义为:将抽象部分与它的实现部分分离,使它们都可以独立地变化。这里的抽象部分和实现部分不是我们通常认为的父类与子类、接口与实现类的关系,而是组合关系。也就是说,实现部分是被抽象部分调用,以用来完成(实现)抽象部分的功能。而桥接的用意就是:将抽象化和实现化解耦,使得二者独立变化。像我们常用的 JDBC桥 DriverManager一样, JDBC进行连接数原创 2016-04-16 19:49:29 · 645 阅读 · 0 评论 -
设计模式:享元模式(Flyweight)
定义与分类享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。GOF中对享元模式的定义为:采用一个共享类来避免大量拥有相同内容的“小类”的开销。这种开销中最常见、直观的影响就是增加了内存的损耗。享元模式以共享的方式高效的支持大量的细粒度对象,减少其带来的开销。在名字原创 2016-04-16 14:59:17 · 445 阅读 · 0 评论 -
设计模式:原型模式(Prototype)
一、定义与结构原型模式属于对象创建模式,我们从名字即可看出该原型模式的思想就是将一个对象作为原型,其进行复制、克隆产生和类似的新对象。GOF给它的定义为:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Java 中提供了clone()方法,使用Object的clone()方法来实现对象的克隆,所以Prototype 模式实现变得简单许多。既然用到clone()方法,不可避免的我们就会原创 2016-04-16 13:48:33 · 660 阅读 · 0 评论 -
Android:Android涉及到的设计模式
组合模式Android中对组合模式的应用,可谓是泛滥成粥,随处可见,那就是View和ViewGroup类的使用。在android UI设计,几乎所有的widget和布局类都依靠这两个类。 组合模式,Composite Pattern,是一个非常巧妙的模式。几乎所有的面向对象系统都应用到了组合模式。将对象View和ViewGroup组合成树形结构以表示”部分-整体”的层次结构(View可以做为Vie原创 2016-05-08 22:59:17 · 1293 阅读 · 0 评论