设计模式
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。
张兴军-w
再远的路,只要迈开双腿,总会到达终点
展开
-
【设计模式】——访问者模式
【访问者模式】 访问者模式(Visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变个元素的类的前提下定义作用于这些元素的新操作 【介绍】 主要解决:稳定的数据结构和易变的操作耦合问题 何时使用:需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免这些操作影响到这些对象的类 如何解决:在被访问者的类里面加一个对外...原创 2018-11-13 09:41:22 · 270 阅读 · 5 评论 -
【设计模式】——模板模式
【模板模式】 定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的特定步骤 在模板模式中,一个抽象类公开的定义了执行他的方法的方式。他的子类可以按需求重写方法实现,但调用将以抽象类中的定义的方式进行。属于行为型模式 【介绍】 主要解决:一些方法通用,却在每一个子类都重写了这一方法 何时使用:有一些通用的...原创 2018-11-13 09:33:52 · 185 阅读 · 6 评论 -
【设计模式】——观察者模式
【观察者模式】 观察者模式定义了一种一对多的依赖关系,让多个观察对象同时监听一个主题对象。这个主题对象再状态发生变换时候,会通知所有观察者对象,使他们能够自动更新自己。 【介绍】 主要解决:一个对象改变状态给其他对象通知的问题 何时使用:一个对象(目标对象)的状态发生变化,所有的依赖对象(观察者对象)都将得通知,进行广播通知 如何解决:使用面向对象技...原创 2018-11-13 09:35:19 · 264 阅读 · 8 评论 -
【设计模式】——命令模式
【命令模式】 命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求进行排队或者使记录请求日志,以及支持可撤销的操作 【介绍】 主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但是某些场合,需要对行为进行纪录、撤销或者重做、事务等处理时候 何时使用:将一组行为先抽象为对象,可以事先二者之间的松...原创 2018-11-09 19:27:30 · 243 阅读 · 8 评论 -
【设计模式】——解释器模式
【解释器模式】 解释器模式(interpreter)给定一个语言,定义他的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子 【介绍】 主要解决:对于一些固定文法构造一个解释句子的解释器 如何解决:构件语法树,定义终结符和非终结符 关键代码:构建环境类,包含解释器之外的一些全部信息,一般是HashMap 优点:可拓展性...原创 2018-11-13 09:44:21 · 263 阅读 · 7 评论 -
【设计模式】——责任链模式
【责任链模式】 责任链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止 【介绍】 主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无需关系请求的处理细节和请求的传递,所哟职责链将请求的发送者和请...原创 2018-11-09 19:24:12 · 283 阅读 · 6 评论 -
【设计模式】——享元模式
【享元模式】 享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象,减少创建对象的数量以减少内存的占用和提高性能,提供了减少对象数量从而改善应用所需要的对象结构的方式 【介绍】 如何解决:用唯一标识码判断,如果在内存中又,则返回这个唯一标识码所标识的对象 关键代码:用MashMap存储这些对象 优点:大大减少了对象的创建,降低系统的...原创 2018-11-09 19:16:53 · 235 阅读 · 4 评论 -
【设计模式】——外观模式
【外观模式】 外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 外观模式隐藏系统的复杂性,并向客户端提供了可以访问系统的接口。这种类型的设计模式属于结构型模式,他向现有的系统添加一个接口,隐藏系统的复杂性 【介绍】 主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口 如何解决:客户端不...原创 2018-11-09 19:13:24 · 188 阅读 · 3 评论 -
【设计模式】——装饰模式
【装饰模式】 装饰模式是利用component来对对象进行包装。每个装饰对象的实现就和如何使用这个对象分离开了,每个装饰对象只关心自己的功能,不需要关心如何被添加到对象链当中 【介绍】 主要解决:一般的,我们为了拓展一个类经常使用继承方法实现,由于继承为类引入静态特征,并且随着扩展共能的增多,子类会很多 何时使用:在不想增加很多子类的情况下扩展类 如何解决:将具...原创 2018-11-09 19:11:06 · 169 阅读 · 3 评论 -
【设计模式】——建造者模式
【建造者模式】 建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模型,它提供一种创建对象的最佳方式 Builder类会一步一步构造出最终的对象,该Builder类是独立于其他对象的 【介绍】 主要解决:在软件系统中,有时候面临着一个复杂对象的创建工作,其通常由各个部分的子对象用一定的算法构成,由于需求的变化,这个复杂的对象各个部分经常面...原创 2018-11-09 19:06:50 · 156 阅读 · 3 评论 -
【设计模式】——原型模式
【原型模式】 原型模式是用原型实例制定创建对象的种类,并且通过拷贝这些原型创建新的对象 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。 【介绍】 主要解决:在运行期建立和删除原型 何时使用:1、当一个系统应该独立于它的产品创建,构成和表示时;2、当要实例化的类是在运行时刻指定时,例如,通过动态装载;3、为了避免...原创 2018-11-09 17:34:11 · 178 阅读 · 3 评论 -
【设计模式】——单例模式
【单例模式】 单例模式是一种最简单的设计模式之一,属于创建型模型,它提供了一种创建对象的最佳方式。单例模式涉及到一个单一的类,只有一个实例存在,同时提供能对该实例加以访问的全局访问方法 【介绍】 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点 主要解决:一个全局使用的类频繁地创建与销毁 如果解决:判断系统是否已经有这个单例,如果有返回,没...原创 2018-11-09 17:31:22 · 168 阅读 · 2 评论 -
【设计模式】——工厂方法模式
【工厂模式】 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类 【介绍】 主要解决:接口选择的问题 何时使用:明确的计划不同条件下创建不...原创 2018-11-09 17:28:21 · 188 阅读 · 4 评论 -
【设计模式】——中介者模式
【中介者模式】 中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互 【介绍】 主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理 何时使用:多各类相互耦...原创 2018-11-08 20:23:04 · 187 阅读 · 2 评论 -
【设计模式】——抽象工厂模式
【抽象工厂模式】 抽象工厂模式是围绕一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模型,它提供了一种创建对象的最佳方式 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式的指定他们的类。每个生成的工厂都能按照工厂模式提供对象 【介绍】 主要解决:接口选择问题 如何解决:在一个产品族里面,定义多个产品 ...原创 2018-11-07 20:55:01 · 182 阅读 · 4 评论 -
【设计模式】——状态模式
【状态模式】 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 【介绍】 意图:允许对象在内部状态发生改变它的行为,对象看起来好像修改了它的类 主要解决:当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化 何时使用:代码中包含大量与对象状态有关的条件语句 ...原创 2018-11-07 20:51:28 · 188 阅读 · 2 评论 -
【设计模式】——适配器模式
【适配器模式】 适配器模式(Adapter)将一个类的接口转换成客户希望的另一个接口。adapter模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作 【介绍】 主要解决:在软件系统中,常常要将一些“现存的现象”放到新的环境中,而新环境要求的接口是现对象不能满足的 何时使用:1、系统需要使用现有的类,而此类的接口不符合系统的需求。2、想要建立一个可以重复使用的类,...原创 2018-11-07 20:48:36 · 217 阅读 · 3 评论 -
【设计模式】——组合模式
【组合模式】 组合模式(Composite)将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性 【介绍】 主要解决:再树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦 何时使用:表示的对象为部分-整体层次结构、希望用户忽...原创 2018-11-07 20:44:01 · 185 阅读 · 4 评论 -
【设计模式】——桥接模式
【桥接模式】 桥接模式(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化,。这种类型的设计模式属于结构型模式,它通过抽象化和实现化之间的桥接结构实现两者的解耦 【介绍】 主要解决:在多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活 何时使用:实现系统可能有多个角度分类,每一种角度都可能变化 如何解决:把这多种角度分离开来,...原创 2018-11-07 20:40:16 · 176 阅读 · 3 评论 -
【设计模式】——策略模式
【策略模式】 策略模式是一种定义一系列算法的方法,从概念上看,所有这些算法完成相同的工作,但是实现不同,它可以以相同的方式调用所有的算法,减少各种算法类与使用算法类之间的耦合 【介绍】 • 作用:定义一系列算法,把他们一个个封装起来,并且使他们可以相互替换 • 主要解决:在多种算法类似的情况下,使用判断所带来的复杂和难以维护 • 何时使用:一个系统有许许多多的类,而...原创 2018-11-02 11:43:49 · 219 阅读 · 6 评论 -
【设计模式】——备忘录模式
【备忘录模式】 备忘录模式(Memento)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态 【介绍】 何时使用:需要记录一个对象的内部状态,目的是为了允许用户取消不确定或者错误的操作,能够恢复到他原来的状态 如何解决:通过一个备忘录专门存储对象状态 关键代码:客户不与备忘录类耦合,与备忘...原创 2018-11-06 19:23:11 · 182 阅读 · 4 评论 -
【设计模式】——概述
简介 设计模式(Design pattern)代表了最佳的实践,经常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的实验和错误总结出来的,是一套被反复使用,多数人知晓的、经过分类的、代码设计经验的总结。 设计模式的类型 一、创建型模型:(对象怎么来)提供了一种在创建对象的同时隐藏创建逻辑的一...原创 2018-10-21 19:16:57 · 229 阅读 · 8 评论 -
【设计模式】——总结
【前言】 生活还在继续,编程也不会结束,而我们的设计模式的学习也要暂时告一段落了 【正文】 设计模式分为三种类型,以下面导图为例 一、创建型模型:(对象怎么来)提供了一种在创建对象的同时隐藏创建逻辑的一种方式,而不是使用new运算符直接实例化对象。使得程序在判断针对某个给定实例需要创建那些对象时更加灵活。 工厂模式(Factory Pattern):定义一个用于创建对象的接...原创 2018-11-13 09:57:34 · 253 阅读 · 14 评论