
设计模式
"设计模式"的目的是让读者不仅学习怎样在软件设计中使用好设计模式,更重要的是让读者通过学习使用设计模式深刻地理解面向对象的设计思想,以便更好地使用面向对象语言解决设计中的诸多问题。
xiangzhihong8
著有《React Native移动开发实战》1,2,3版本、《Kotlin入门与实战》1,2版本、《Weex跨平台开发与实战》、《React Native开发进阶》和《Flutter跨平台开发实战》和《Android应用架构实战》和《鸿蒙应用开发与实战》、《Vue3 项目开发实战》即将出版
展开
-
中介者模式
概念中介者模式:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互结构组成和类图类图: 中介者模式主要由:Mediator(中介者)、Colleague(同事类)、ConcreteMediator(实现类)组成:抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并原创 2017-01-20 21:16:40 · 1584 阅读 · 0 评论 -
访问者模式
概念访问者模式:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。 访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。结构组成与类图先看一下类图: 访问者模式主要由:Visitor(访问者角色)、Concrete Visitor(具体访问者角色)、Element(元原创 2017-01-19 22:35:38 · 1805 阅读 · 0 评论 -
状态模式
概述状态模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。允许一个对象在其内部状态改变时改变它的行为。结构与组成先看一下类图: 状态模式主要由三部分组成:环境类Context、抽象状态类State、具体状态类ConcreteState。 环境类Context:定义客户感兴趣的接口,维护一个ConcreteState子类的实例,这个实原创 2017-01-15 22:32:03 · 1820 阅读 · 0 评论 -
备忘录模式
概念备忘录模式:又叫做快照模式,属于行为模式的一种,指在不破坏封装性的前提下,获取到一个对象的内部状态,并在对象之外记录或保存这个状态。在有需要的时候可将该对象恢复到原先保存的状态。我们相当于把对象原始状备份保留,所以叫备忘录模式。 结构与组成首先看一下备忘录模式的UML图: 备忘录模式主要包含:发起者对象(Originator)、备忘录(Memento)和管理者角色(Caretaker)三部原创 2016-12-24 12:51:41 · 2556 阅读 · 0 评论 -
android开发中使用到的一些设计者模式
单例模式 概念:确保一个类只有一个实例,并且自行实例化并向整个系统提供整个实例。public class Singleton { private static volatile Singleton instance = null; private Singleton(){ } public static Singleton getInstance()原创 2016-12-24 11:19:02 · 4782 阅读 · 0 评论 -
责任链模式
概述概念:责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。意图及组成责任链的意图是给多个对象赋予请求的权利,从而解耦发送者和接受者,该请求链对象会在一条链上一直传递直原创 2016-12-17 21:38:54 · 2369 阅读 · 0 评论 -
迭代子模式
概述概念:在阎宏博士的《JAVA与模式》中关于迭代子模式的定义是这样的:迭代子模式又叫游标(Cursor)模式,是对象的行为模式。迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象(internal representation)。迭代子模式的意图及组成迭代子模式有两种实现方式,分别是白箱聚集与外禀迭代子和黑箱聚集于内禀迭代子。白箱聚集与外禀迭代子如果一个聚集的接口提供了可以用来修改聚原创 2016-12-15 21:52:02 · 2289 阅读 · 1 评论 -
模板方法模式
概述概念:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。模板方法模式属于行为类模式。模板方法的组成类图: 如图所示,模板方法模式主要由AbstractClass(抽象类)和ConcreteClass(具体子类)组成。 AbstractClass(抽象类):定义一个模板,亦称为算法的“骨架”,在抽象类中定义了一系列基本操作(P原创 2016-12-13 22:13:49 · 1682 阅读 · 1 评论 -
桥接模式
概述当一个抽象对象可能有多个 实现时,通常用继承来协调他们。抽象类定义对该抽象的接口,而具体的子类则用不同的方式来实现。但是此方法有时候不太灵活。继承机制将抽象部分与它的实现部分固定在一起,是的难以对抽象和实现部分单独出来进行修改、扩充和重用。那么我们有没有方法将抽象部分和行为部分各自独立开来你呢:即将原来放在一个接口的,现在放在两个接口(抽象接口和行为接口)。然后在对各自的具体子类定义抽象和行为原创 2016-12-03 23:20:53 · 1562 阅读 · 0 评论 -
享元模式
享元模式如果在一个系统中存在多个相同的对象,那么只需共享一份对象的拷贝,而不必为每一次使用都创建新的对象。这里可以看出,享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。概述享元模式采用一个共享来避免大量拥有相同内容对象的开销。这种开销最常见、最直观的就是内存的损耗。享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External Stat原创 2016-11-21 16:50:34 · 2007 阅读 · 0 评论 -
装饰者模式
装饰器模式动态地给一个对象添加一些额外的职责,装饰器模式就是基于对象组合的方式,可以很灵活的给对象添加所需要的功能。装饰器模式的本质就是动态组合。装饰器模式意图和结构装饰者模式提供了一种给类增加功能的方法,它通过动态组合可以给原有的代码新增加新的代码,达到修改现有代码的目的,因此我们可以用在修复bug上。装饰者模式主要有Component、ConcreteComponent、Decorator和C原创 2016-11-12 23:35:25 · 1967 阅读 · 0 评论 -
外观模式
外观模式为子系统中的一组接口提供一个统一接口。Facade模式定义了一个高层接口,这个接口使得这子系统更容易使用。概述实际应用中,我们在对付一些老旧的code(尤其是将C的代码转成C++代码)或者即便不是老旧code,但涉及多个子系统时,除了重写全部代码(对于老旧code而言),我们还可能采用这样一种策略:重新进行类的设计,将原来分散在源码中的类/结构及方法重新组合,形成新的、统一的接口,供上层应原创 2016-11-04 23:22:55 · 2148 阅读 · 0 评论 -
原型模式
概念: 是一种创建型设计模式,它通过复制一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的原型。原型模式的拷贝:分为"浅拷贝"和"深拷贝"。(这个和我们理解的拷贝是一样的)浅拷贝: 对值类型的成员变量进行值的复制,对引用类型的成员变量只复制引用,不复制引用的对象.深拷贝: 对值类型的成员变量进行值的复制,对引用类型的成员变量也进行引用对象的复制.组成原型模式涉及到三个角色原创 2016-10-30 22:03:49 · 1618 阅读 · 0 评论 -
解释器模式
解释器模式:解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。组成模式所涉及到4个角色:抽象表达式(Expression)角色:声明一个所有的具体表达式角色都需要实现的抽象接口。这个接口主要是一个interpret()方法,称做解释操作。终结符表达式(Terminal Expression)角色:原创 2016-10-23 19:39:19 · 1718 阅读 · 0 评论 -
策略模式
策略(Strategy)模式策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。概述策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一组原创 2016-10-23 10:39:50 · 1796 阅读 · 0 评论 -
建造者模式
概念: 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 [构建与表示分离,同构建不同表示]与工厂模式的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者最后得到产品。即建造模式可以强制实行一种分步骤进行的建造过程。建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调原创 2016-10-12 15:24:28 · 2164 阅读 · 0 评论 -
命令模式
命令模式定义将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。作用命令模式主要应用于将行为调用者与实现者解耦。讲发出请求和执行对象分开来。例如:比如我们以前惯用的写代码的方式是LogicProcess logic = new LogicProcess(); 然后紧接着调用实现方法logic.process(),这种写法其实非常普遍,原创 2016-09-07 22:21:15 · 1885 阅读 · 0 评论 -
迭代器模式
迭代器模式(Iterator): 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。用途:在软件构建过程中,集合对象内部结构常常变化各异。但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为“ 同一种算法在多种集合对象上进行操作”提供了可能。使用面向对象技术将这种遍历机制抽象为“迭代器对象”为“应对变化中的集原创 2016-09-03 10:54:14 · 1467 阅读 · 0 评论 -
单例模式
单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比原创 2016-08-28 13:56:28 · 2088 阅读 · 0 评论 -
组合模式
组合模式组合模式(Composite Pattern)有时候又叫做部分-整体模式,允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。根据《设计模式》定义:将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和使用具有一致性。组合模式主要涉及到几个对象:1.Component 是组合中的对象声明接口,原创 2016-08-24 21:58:37 · 2155 阅读 · 1 评论 -
工厂模式
工厂模式何为工厂模式:定义一个用于创建对象的接口,让子类去决定实例化那一个类,FactoryMethod可以使一个类的实例化延迟到其子类。工厂模式分类工厂模式按其形态分主要分为三类:简单工厂、工厂模式和抽象工厂模式。简单工厂模式简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。顾名思义工厂就是生产东西的,有原料(参数),模子(对象)就能生产出很多个具有相同功能的对象啦。原创 2016-08-04 09:47:14 · 1910 阅读 · 1 评论 -
适配器模式
适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适用场景:1、已经存在的类的接口不符合我们的需求;2、创建一个可以复用的类,使得该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作;3、在不对每一个都进行子类化以匹配它们的接口的情原创 2016-08-08 10:21:53 · 1489 阅读 · 0 评论 -
代理模式
代理模式:为其他对象提供一种代理以控制对这个对象的访问代理模式的作用:为其他对象提供一种代理以控制对这个对象的访问: 就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式角色:代理模式一般涉及到三个角色 :抽象角色、代理角色、真实角色原创 2016-08-01 09:17:55 · 1726 阅读 · 0 评论 -
观察者模式
观察者模式: 观察者模式定义了一种一对多的依赖关系,当一个对象改变状态时,它的所有依赖者都会受到通知,并自动更新。注意: 观察者模式会造成内存泄漏,一定要记得取消订阅UML关系图如下:UML观察者模式提供了一种对象设计,让主题和观察者之间松耦合。观察者与主题之间依赖于接口,主题不需要知道观察者的具体实现可以动态添加删除观原创 2016-07-30 22:40:43 · 3787 阅读 · 2 评论 -
23种设计模式
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式原创 2016-06-15 15:16:52 · 5883 阅读 · 1 评论