Android设计模式(二十二)-外观模式

外观模式猛一听有点蒙逼,但是在开发中我们应该都用过,只是没这个概念罢了。

比如在开发时通常会把图片加载框架和网络框架进行封装,封装到最后只暴露出来一个最上级的类供外部调用,外部调用这一个类提供的方法,然后这个类内部具体调用了什么,用的什么逻辑等等外部都不用管。这样也方便后期随便更换图片加载框架和网络框架,而业务代码不用做任何改动。

这其实就是外观模式的一种实现。

定义

要求子系统的外部与其内部的通讯必须通过一个统一的对象进行。提供一个高层次接口,使得子系统更易于使用,

Mehr lesen

Android设计模式(二十一)-享元模式

享元模式是对象池的一种实现。类似于线程池,线程池可以避免不停的创建和销毁多个对象,消耗性能。享元模式也是为了减少内存的使用,避免出现大量重复的创建销毁对象的场景。

享元模式用在一批相同或相似的对象上,这些对象有可以共享的内部状态和各自不同的外部状态。

享元模式中会有一个工厂,工厂维护着一个容器,容器以键值对的方式存储,键是对象的内部状态,也就是共享的部分,值就是对象本身。

客户端从这个工厂获取对象,如果容器中存在这个对象就直接返回,不存在再创建新的对象并存入容器,避免了大量重复创建对象。

Mehr lesen

Android设计模式(二十)-装饰模式

装饰模式也叫做包装模式,是结构型设计模式之一。目的是为了给一个类或对象增加行为。可以是继承的一种替代。

装饰模式也很好理解,比如一个人,给他装上火箭就能上天了,装上潜水服就能下海了,但本身还是个人,人没有任何变化。

定义

动态地给一个对象添加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。

Mehr lesen

Android设计模式(十九)-适配器模式

适配器模式是咋Android中使用非常广泛的一种设计模式,总到处可见的Adapter就可以看出来。适配器模式类似于电源适配器的设计思想,将两个不兼容的东西通过适配兼容到一起。

在实际开发中,经常会遇见两个没有关系的类型之间的交互。那么有下面两个方式:

  1. 修改各自类的接口,以达到互相交互的目的。
  2. 在两个类之间建立一个“混血儿”接口,将两个类型进行兼容,不用修改原来的类的代码。

第一种方式明显不是个好选择,我们不愿意为了一个应用而修改各自的接口。而且如果一个类要适配很多类的话,避免要做很多 这样的修改,既不利于扩展也不利于维护。

第二种就是要说的适配器模式了。

Mehr lesen

Android设计模式(十八)-组合模式

组合模式,也称作部分整体模式。是结构型设计模式之一。组合模式画成图就是数据结构中的树结构,有一个根节点,然后有很多分支。将最顶部的根节点叫做根结构件,将有分支的节点叫做枝干构件,将没有分支的末端节点叫做叶子构件.

定义

将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。

Mehr lesen

Android设计模式(十七)-代理模式

代理模式也叫委托模式,是结构型设计模式。代理就是让别人帮你做事,比如帮你带饭,请律师打官司什么的。

定义

为其他对象提供一种代理以控制对这个对象的访问。

Mehr lesen

Android设计模式(十六)-中介者模式

中介者模式又叫调解者模式或调停者模式,是行为型设计模式之一。

生活中的中介者的作用就是连接两方的一个桥梁,比如房产中介,买房的只需跟中介打交道,然后买房的也跟着中介打交道,

没有中介的时候是这样的:


Mehr lesen

Android设计模式(十五)-访问者模式

访问者模式是一种将数据操作与数据结构分离的设计模式。确实是我目前为止见过的最复杂的了。

访问者模式的思想是:

  • 软件系统中拥有一个由许多对象构成的,比较稳定的对象结构。这些对象都拥有一个accept方法来接受访问者的访问。
  • 访问者是一个接口,对对象结构中的每一个元素都提供一个visit方法,对不同的访问对象执行不同的visit方法做出不同的处理。
  • 在对象结构的一次访问中,遍历整个对象结构,对每一个元素执行accept方法,在每个accept方法中调用访问者的visit方法,从而使访问者可以处理对象结构中的每一个元素。
  • 可以针对同一个对象结构,设计不同的访问者类,达到区别对待的目的。

Mehr lesen

Android设计模式(十四)-模板方法模式

模板方法模式,名字就很直接,也很容易理解。什么是模板,模板就是一套固定格式。我们可以想象一个普通员工的一天的上班模板:去公司上班->工作->下班回家。
对于每一个员工来说,这三个步骤的具体内容是不一样的,但是流程都是这样的。

在开发中也会有这种情况,架构师或者高级开发人员写好一些方法流程,规定方法名,方法输出,执行顺序等等,但是方法体是空的,留给初级的开发人员去填写具体的实现功能。
而且这样一套模板用不同的平台语言实现就可以生成不同平台的产品。这些解决方案都可以称为模板方法模式。

Mehr lesen

Android设计模式(十三)-迭代器模式

迭代器模式又称游标模式,也是行为型设计模式。源于对容器的访问,主要解决容器的遍历操作。

我们队容器的访问必然会用到遍历。我们可以将遍历的方法封装到容器中,或者不提供遍历方法。如果封装在容器中,容器就承担了过多的功能。如果不提供遍历方法,使用者会自己去实现遍历方法,让容器内部细节暴露无遗。

因此在访问类和容器之间加上了第三者–迭代器。

Mehr lesen

Android设计模式(十二)-备忘录模式

备用录模式是一种行为型设计模式,用于保存对象当前的状态,以便之后可以再次恢复到此状态。

备忘录模式要保证保存的对象状态不能被对象从外部访问,保护好被保存的这些对象状态的完整性以及内部实现不向外部暴露。

定义

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。

Mehr lesen

Android设计模式(十一)-观察者模式

观察者模式是一种使用频率非常高的设计模式,最常用的地方就是订阅-发布系统。

这个模式的重要作用就是将观察者和被观察者解耦,使他们之间的依赖更小甚至没有。

定义

定义对象一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于他的对象都会得到通知并被自动更新。

Mehr lesen

Android设计模式(十)-命令模式

命令模式是行为型设计模式之一。命令模式没那么多条条框框,所以很灵活。命令模式简单的说就是给他下一个命令,然后他就会执行和这个命令的一系列操作。例如点击电脑的关机命令,系统会执行暂停,保存,关闭等一系列的命令,最后完成关机。

命令模式也跟关机一样,将一系列方法封装为一个方法,用户只要执行这个方法就会执行封装的一系列方法。不过真正用起来并不是这么直白简单。

定义

将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化;对请求队列或者记录请求日志,以及支持可撤销的操作。

Mehr lesen

Android设计模式(九)-解释器模式

解释器模式是一种行为模式,实际开发中用的很少,提供了一种解释语言的语法或表达式的方式。

定义了一个表达式接口,通过接口解释一个特定的上下文。类似于json解析器按一定的语法解析json的。

定义

给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。

Mehr lesen

Android设计模式(八)-责任链模式

责任链模式是一个行为模式。责任链就是从一个起点发起请求,然后沿着任务链依次传递给每一个节点上的对象,直到有一个节点处理这个请求为止。听着是不是跟Android的事件分发机制很像。

定义

使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递改请求,直到有对象处理它为止

Mehr lesen

Android设计模式(七)-状态模式

状态模式看起来和策略模式很像,但是是两个不一样的设计模式。状态模式是一个类根据内部的状态动态的选择行为。策略模式一般用于算法,通过设置不同的策略类来执行不同的算法。状态模式的一个特点就是行为改变状态,而状态又导致行为的变化。策略模式是可以在运行时外部直接策略的,状态模式一般是不能替换的。

定义

允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。

Mehr lesen

Android设计模式(六)-策略模式

在开发中几女航遇见下面这种情况:实现同一个功能有很多不停的算法和策略,然后根据实际情况来选择不同的算法和策略。

一般的做法是在一个类里写不同的方法,然后根据实际情况用一连串的if-else或switch来选择对应的方法。这种方法多了后,这个类会变得臃肿,难以修改。

所以如果把不同的策略抽象出来,提供一个统一的接口,为每一个策略写一个实现类,这样客户端就能通过调用接口的不同的实现类来动态替换策略。这就是策略模式

Mehr lesen

Android设计模式(五)-抽象工厂模式

上一篇的工厂模式中中,工厂生产出来的产品都是实现同一个接口或继承同一个抽象类的。而有时候工厂可以生产出不是同一个接口或抽象类的产品,也就是说生产出来的产品是不确定的,就是抽象工厂了。

博客地址

定义

为创建一组相关或相互依赖的对象提供一个接口,而无需指定他们的具体类。

Mehr lesen

Android设计模式(四)续:Activity的onCreate是怎么调用的

这里分析的是app第一次启动时的第一个Activity的onCreate()方法的启动流程。

先贴一下大致的流程图吧,不会画,很丑

Mehr lesen

Android设计模式(四)- 工厂方法模式

工厂方法模式也是创建型模式。
工厂模式根据抽象程度可以分为三种:简单工厂模式,工厂方法模式,抽象工厂模式。

博客地址

定义

定义一个用于创建对象的接口,让子类决定实例化哪一个类。

Mehr lesen