设计模式
文章平均质量分 57
抓狼的羊
目前从事移动应用的开发,希望能在这里交到更多的朋友,学到更多的知识。
展开
-
单例设计模式
1. 饿汉式 2.懒汉式 3. 懒汉式中多线程并发问题解决 (双重判空)原创 2018-09-04 16:14:46 · 88 阅读 · 0 评论 -
状态模式(转载)
状态模式(State)的定义定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类状态模式(State)适用性 1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。 2.一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态...转载 2018-09-10 12:45:59 · 164 阅读 · 0 评论 -
构造者Builder模式
根据对象的属性行为创建实例,通常有几种方法:(1)通过带有参数的构造函数(同时函数重载),来满足根据不同属性(必选属性,可选属性)创建对象(2)通过无参构造函数(或者有参构造函数),再配合属性的getter,setter方法灵活地设置对象的属性(3)通过Builder模式创建对象分析几种方式的特点:方式(1)(2)对于简单对象的创建比较合适,这种场景下对象属性基本固定且属性的数...原创 2018-09-07 09:11:11 · 915 阅读 · 0 评论 -
策略模式
《JAVA与模式》之策略模式(转载自http://www.cnblogs.com/java-my-life/archive/2012/05/10/2491891.html)在阎宏博士的《JAVA与模式》一书中开头是这样描述策略(Strategy)模式的: 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算...转载 2018-09-07 10:18:30 · 140 阅读 · 0 评论 -
责任链(委托)模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配...转载 2018-09-07 11:16:01 · 436 阅读 · 0 评论 -
迭代器模式(转载)
在阎宏博士的《JAVA与模式》一书中开头是这样描述迭代子(Iterator)模式的: 迭代子模式又叫游标(Cursor)模式,是对象的行为模式。迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象(internal representation)。聚集和JAVA聚集 多个对象聚在一起形成的总体称之为聚集(Aggregate),聚集对象是能够包容一组对象的容器对象。聚集依...转载 2018-09-13 12:13:51 · 923 阅读 · 0 评论 -
备忘录模式(转载)
在阎宏博士的《JAVA与模式》一书中开头是这样描述备忘录(Memento)模式的: 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起...转载 2018-09-13 12:28:41 · 277 阅读 · 0 评论 -
享元模式(转载)
在阎宏博士的《JAVA与模式》一书中开头是这样描述享元(Flyweight)模式的: Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。Java中的String类型 在JAVA语言中,String类型就是使用了享元模式。Strin...转载 2018-09-13 19:04:11 · 161 阅读 · 0 评论 -
原型模式(转载)
在阎宏博士的《JAVA与模式》一书中开头是这样描述原型(Prototype)模式的: 原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是选型模式的用意。原型模式的结构 原型模式要求对象实现一个可以“克隆”自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。这样一来,通过原型实例创建新的...转载 2018-09-13 19:40:25 · 230 阅读 · 0 评论 -
抽象工厂模式(转载)
场景问题 举个生活中常见的例子——组装电脑,我们在组装电脑的时候,通常需要选择一系列的配件,比如CPU、硬盘、内存、主板、电源、机箱等。为讨论使用简单点,只考虑选择CPU和主板的问题。 事实上,在选择CPU的时候,面临一系列的问题,比如品牌、型号、针脚数目、主频等问题,只有把这些问题都确定下来,才能确定具体的CPU。 同样,在选择主板的时候,也有一系列问题,比如品牌、芯片组、集成...转载 2018-09-13 20:12:22 · 253 阅读 · 0 评论 -
解释器模式(转载)
在阎宏博士的《JAVA与模式》一书中开头是这样描述解释器(Interpreter)模式的: 解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式的结构 下面就以一个示意性的系统为例,讨论解释器模式的结构。系统的结构图如下所示: 模式所涉及的角色如下所示: (...转载 2018-09-12 09:17:43 · 143 阅读 · 0 评论 -
模板方法模式(转载)
在阎宏博士的《JAVA与模式》一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。模板方法模式的结构 模板方法模式是所有模式中...转载 2018-09-12 09:02:27 · 123 阅读 · 0 评论 -
命令模式(转载)
在阎宏博士的《JAVA与模式》一书中开头是这样描述命令(Command)模式的: 命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。 命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式的结构 命令模式是对命令的封装。命...转载 2018-09-12 08:40:17 · 143 阅读 · 0 评论 -
工厂模式
1. 根据静态工厂方法创建对象2. 在1的基础上,提供一个工厂类的接口。工厂类均要实现这个接口(即抽象工厂)。那么不同的抽象工厂实现类就可以去创建不同类别的对象。 3. 可以在工厂接口中定义多个方法,对应创建不同类型的对象 ...原创 2018-09-04 18:54:39 · 107 阅读 · 0 评论 -
中介者模式(转载为主)
原文出处:http://blog.csdn.net/zhengzhb/article/details/7430098 定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。类型:行为类模式类图:中介者模式的结构 中介者模式又称为调停者模式,从类图中看,共分为3部分: 抽象中介者:...转载 2018-09-11 17:13:53 · 134 阅读 · 0 评论 -
门面模式(外观模式)(转载)
针对外观模式,在项目开发和实际运用中十分频繁,但是其极易理解,下面就简要介绍一下。一、概念介绍 外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。 二、角色及使用场景 简单来说,该模式就是把一些复杂的流程封装成一个接口...转载 2018-09-11 18:54:14 · 115 阅读 · 0 评论 -
代理模式(静态代理+动态代理)(转载)
代理模式是Java常见的设计模式之一。所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。为什么要采用这种间接的形式来调用对象呢?一般是因为客户端不想直接访问实际的对象,或者访问实际的对象存在困难,因此通过一个代理对象来完成间接的访问。在现实生活中,这种情形非常的常见,比如请一个律师代理来打官司。下面例子的代码可以访问源码。欢迎star,欢迎fork代...转载 2018-09-11 19:09:12 · 143 阅读 · 0 评论 -
访问者模式(转载)
在阎宏博士的《JAVA与模式》一书中开头是这样描述访问者(Visitor)模式的: 访问者模式是对象的行为模式。访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。分派的概念 变量被声明时的类型叫做变量的静态类型(Static Type),有些人又把静态类型叫做明显类型(Apparent Type);而变量所引...转载 2018-09-11 19:52:09 · 140 阅读 · 0 评论 -
桥梁模式
桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者独立的变化”。抽象化 其实就是根据事物的特征或者行为共性抽取出抽象类或者接口的过程。实现化抽象化给出的具体实现,就是实现化。其实也就是根据事物特征或者行为的差异性 给出不同的具体实现。即抽象类的实现或者接口的实现类。脱耦所谓耦合,就是两个实体的行为的某种强关联。而将...原创 2018-09-05 15:44:24 · 1415 阅读 · 0 评论 -
组合模式
组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体—部分”(Part-Whole)模式,它是一种对象结构型模式。Android中View层次结构就采用了组合模式。View是最高层的抽象,它既代表单独的View视图,又可以表示ViewGroup视图容器。组合模式的关键是定义...原创 2018-09-05 17:24:27 · 129 阅读 · 0 评论 -
装饰者模式
动态地给一个对象添加一些额外的职责。就增加功能来说, Decorator模式相比生成子类更为灵活。该模式以对客 户端透明的方式扩展对象的功能。其中具体涉及的角色有:(1)抽象组件:定义一个抽象接口,来规范准备附加功能的类(2)具体组件:将要被附加功能的类,实现抽象构件角色接口(3)抽象装饰者:持有对具体构件角色的引用并定义与抽象构件角色一致的接口(4)具体装饰:实现抽象装饰者角色,负...原创 2018-09-06 09:21:24 · 119 阅读 · 0 评论 -
观察者模式
在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。(Android中Eventbus框架就是这种模式典型实现)举例:以微信公众号为例:测试代码:输出结果: 这种模式在实际项目中经常遇到,也是比较容易掌握的。...原创 2018-09-06 10:17:32 · 132 阅读 · 0 评论 -
适配器模式(转载)
在阎宏博士的《JAVA与模式》一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔...转载 2018-09-13 20:29:37 · 250 阅读 · 0 评论