设计模式
小布的世界
追逐猎物仅仅靠猛跑是不够的,尤其在对付大群猎物的时候,必要的准备和步骤是获得成功的基础。而谋划是实现这一切的唯一保障。
展开
-
GOF设计模式--简单工厂模式
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 ——360百科简单的说工厂是用来接收订单,生产产品的地方,简单工厂,就是说这个工厂有点简陋功能设备比较少。举个生产汽原创 2017-02-09 17:15:35 · 427 阅读 · 0 评论 -
GOF设计模式-命令模式
将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。ConcreteCommand类:Command类的实现类,对抽象类中声明的方法进行实现。Client类:最终的客户端调用类。Invoker类:调用者,负责调原创 2017-03-01 14:53:46 · 419 阅读 · 0 评论 -
GOF设计模式-桥接模式
桥接模式是用于“把抽象和实现分开,这样它们就能独立变化”。 桥接模式使用了封装、聚合,可以用继承将不同的功能拆分为不同的类。 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。例如汽车在路上行驶的来说。即有小汽车又有公共汽原创 2017-03-01 14:12:47 · 350 阅读 · 0 评论 -
GOF设计模式-迭代模式
迭代子模式又叫游标(Cursor)模式,是对象的行为模式。迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象(internal representation)。抽象迭代子(Iterator)角色:此抽象角色定义出遍历元素所需的接口。具体迭代子(ConcreteIterator)角色:此角色实现了Iterator接口,并保持迭代过程中的游标位置。聚集(Aggregate)角色:此抽象原创 2017-02-27 15:13:40 · 273 阅读 · 0 评论 -
GOF设计模式-组合模式
组合模式:将对象合成树形结果以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。像xml的结构就是组合组合,dom4j解析xml的时候,就是这样的。Company:是一个抽象接口,实现所有类共有接口的默认行为。ConcreteCompany: 实现类执行具体的添加节点,删除节点,等操作,FinanceDepartment,HRDepartment:一个具体的原创 2017-02-27 14:11:39 · 391 阅读 · 0 评论 -
GOF设计模式-备忘录模式
备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一同使用。备忘录模式所涉及的角色有三个:备忘录(Memento)角色、发起人(Originator)角色、负责人(Caretaker)角色。发起人角原创 2017-02-17 15:17:48 · 341 阅读 · 0 评论 -
GOF设计模式-适配器模式
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。就像很多购买港版的电子设备一样,直接买来是没有办法充电的,因为港版的插头,全部都是那种很大的三孔的,大陆这边有2空的,有小三孔的。所以在买电子设备的时候,最好再买一个转换插头,可以插在我们这边的小插孔上,另一头可以插上港版的那种大插头(其实有那种通用的插排的,深圳比较多,因为深圳距原创 2017-02-17 13:51:54 · 293 阅读 · 0 评论 -
GOF设计模式-状态模式
状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。环境(Context)角色,也成上下文:定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。这个具体状态类的实例给出此环境对象的现有状态。抽象状态(State)角色:定义一个接口,用以封装环境(Context)对象的一个特定的状态所对应的行为。具体状态(ConcreteState)角色:每一个具体状态原创 2017-02-16 17:19:06 · 622 阅读 · 0 评论 -
GOF设计模式-抽象工厂
抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据LSP原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽原创 2017-02-16 16:18:22 · 285 阅读 · 0 评论 -
GOF设计模式-观察者模式
观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察原创 2017-02-16 14:37:10 · 917 阅读 · 0 评论 -
GOF设计模式-建造者模式(builder)
建造者模式(builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Dirextor: 指挥者类,用于统一组装流程Builder:抽象Builder类,规范产品的组建,一般是由子类实现。DFCarBuilder: 抽象Builder类的实现类,实现抽象Builder类定义的所有方法,并且返回一个组建好的对象Car:产品类举个建造汽车的例子,现在要建造一辆汽原创 2017-02-16 13:39:07 · 711 阅读 · 0 评论 -
GOF设计模式-外观模式(Facade)
Facade模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行。Facade模式提供一个高层次的接口,使得子系统更易于使用。在给外部系统提供接口时,要一个接口做一件事,但是必须要把事情做完,也就是禁止踢皮球,防止客户端调用了我的A方法,还要在调用B方法才能完成想做的事,其实对于客户端来说,调用一下结果得到相应的回应结果就好了,具体怎么做,不需要知道细节,这样设计,有助于程序原创 2017-02-15 17:30:30 · 570 阅读 · 0 评论 -
GOF设计模式-模板方法模式
模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。简单的说,就是把公用的一些东西放到父类,留下钩子函数,让子类去实现自己独特的地方。Refit:抽象父类,封装了一些公用方法HomeCar:子类,只需要实现自己原创 2017-02-15 16:40:59 · 330 阅读 · 0 评论 -
GOF设计模式-工厂模式
工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。既然说到工厂模式,简单回顾一下简单工厂模式在简单工厂模式中,如果我们要添加一个产品,比如日产,那么除了要添加一个日产产品类还要再修改一下case分支,那么这就和开山篇 中的开闭原则冲突了,即对修改关闭,对扩展开放,工厂模式就能很好的解决这个问题。UML图:Car,是产品的抽象类Ho原创 2017-02-14 16:07:12 · 423 阅读 · 0 评论 -
GOF设计模式-代理模式
代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。Subject:抽象主题类,声明真实主题与代理的共同接口方法。RealSubject:真实主题类,定义了代理所表示的真实对象,客户端通过代理类间接的调用真实主题类的方法。ProxySubject:代理类,持有对真实主题类的引用,原创 2017-02-10 17:31:51 · 364 阅读 · 0 评论 -
GOF设计模式-装饰模式
在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。Component:抽象组件,给对象动态的添加职责。ConcreteComponent:组件具体实现类。Decorator:抽象装饰者,继承Component,从外类来拓展Component类的功能,但对于Component来说无需知道Decorator的存在。Concrete原创 2017-02-10 10:50:13 · 343 阅读 · 0 评论 -
GOF设计模式-策略模式
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化,降低了各种算法类与使用算法类之间的耦合。Strategy:模拟客户端调用 Trip :出行方式接口 TripByBoot,TripByCar,TripByTrain,Trip接口的实现类模拟一个去西藏的例子,去西藏的方式有很多,可以步行,可以开车去,可以坐火车。 去西藏的原创 2017-02-09 18:28:32 · 371 阅读 · 0 评论 -
GOF设计模式-开山篇
前言 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模原创 2017-02-09 16:32:35 · 565 阅读 · 0 评论