DavidWang's Blog

简单一生,快乐一生

Android 设计模式分析十一

原型模式

1. 模式介绍 模式的定义 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 模式的使用场景 类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等,通过原型拷贝避免这些消耗; 通过 new 产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式; 一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对...

Android 设计模式分析十

桥接模式

模式介绍 模式的定义 将抽象部分与实现部分分离,使它们都可以独立的变化。 模式的使用场景 如果一个系统需要在构件的抽象化角色和具体化角色之间添加更多的灵活性,避免在两个层次之间建立静态的联系。 设计要求实现化角色的任何改变不应当影响客户端,或者实现化角色的改变对客户端是完全透明的。 需要跨越多个平台的图形和窗口系统上。 一个类存在两个独立变化的维度,且两个维度都需要...

Android 设计模式分析九

命令模式

1. 模式介绍 模式的定义 将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。 模式的使用场景 系统需要将请求调用者和请求接收者解耦,使得调用者和接收者不直接交互。 系统需要在不同的时间指定请求、将请求排队和执行请求。 系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作。 系统需要将一组操作组合...

Android 设计模式分析八

责任链模式

1. 模式介绍 模式的定义 一个请求沿着一条“链”传递,直到该“链”上的某个处理者处理它为止。 模式的使用场景 一个请求可以被多个处理者处理或处理者未明确指定时。 2. UML类图 角色介绍 Client:客户端 Handler:抽象处理者 ConcreteHandler:具体处理者 3. 模式的简单实现 简单实现的介绍 责任链模式非常简单异常好理解,相信我它比单例模式还简单...

Android 设计模式分析七

迭代器模式

1. 模式介绍 模式的定义 迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。 模式的使用场景   Java JDK 1.2 版开始支持迭代器。每一个迭代器提供next()以及hasNext()方法,同时也支持remove()(1.8的时候remove已经成为d...

Android 设计模式分析六

Binder模式

Binder中的代理模式 再说Binder中的代理模式之前,我们需要先看看代理模式的简单实现,这一部分内容采用了《JAVA与模式》之代理模式这篇文章中的代码示例和uml类图。 1. 模式介绍 代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 模式的使用场景 就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能...

Android 设计模式分析五

策略模式

1. 模式介绍 模式的定义 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 注:针对同一类型操作,将复杂多样的处理方式分别开来,有选择的实现各自特有的操作。 模式的使用场景 针对同一类型问题的多种处理方式,仅仅是具体行为有差别时。 需要安全的封装多种同一类型的操作时。 出现同一抽象多个子类,而...

Android 设计模式分析四

模板方法模式

1. 模式介绍 模式的定义 定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模式的使用场景 多个子类有公有的方法,并且逻辑基本相同时。 重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现。 重构时,模板方法模式是一个经常使用的模式,把相同的代码抽取到父类中,然后通过钩子函...

Android 设计模式分析三

Facade模式

1. 模式介绍 模式的定义 外观模式(也成为门面模式)要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。它提供一个高层次的接口,使得子系统更易于使用。 模式的使用场景 在设计初期阶段,将不同的两个层分离; 在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,大多数的模式使用时也都会产生很多很小的类,这本是好事,但也给外部调用它们的用户程序带来了使用上的困难,增...

Android 设计模式分析二

Builder模式

1. 模式介绍 模式的定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 模式的使用场景 相同的方法,不同的执行顺序,产生不同的事件结果时; 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时; 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常合适; 2. UML类图 角色介绍 ...