Android中常见的设计模式

1. Builder模式

在开发过程中,我们经常用到AlertDialog。在Android源码中,最常用的Builder模式就是AlertDialog.Builder,使用该Builder来构建复制AlertDialog对象。
Android中常见的设计模式_第1张图片

2. 组合模式

Android源码中关于组合模式有一个非常经典的实现,那就是View和ViewGroup的嵌套组合。
Android中常见的设计模式_第2张图片
在Android的视图层级中,容器一定是ViewGroup,而且只有ViewGroup才能包含其他的View,比如LinearLayout能包含TextView、Button等,但是反过来TextView不能包含LinearLayout,因为TextView直接继承与View,并非一个容器。

3. 策略模式

在Android里面策略模式的其中一个典型应用就是动画中的插值器,系统预置的插值器有线性插值器(LinearInterpolator)用于匀速动画;加速减速插值器(AccelerateDecelerateInterpolator)用于起始时动画加速,结尾时动画减速;减速插值器(DecelerateInterpolator)用于减速动画。这些插值器就是策略模式的典型运用。
Android中常见的设计模式_第3张图片

4. 装饰模式

ContextImpl是抽象类Context的具体实现,ContextWrapper及所有其子类对象持有的Context均是ContextImpl对象。所以对于 Application,Activity 和 Service 等类来说,他们只是一个个装饰者,都是用来装饰 ContextImpl 这个被装饰者类。
Android中常见的设计模式_第4张图片

5. 适配器模式

Android中常见的设计模式_第5张图片
开发过程中我们经常会使用ListView,它所需要的目标接口(target interface)就是ListAdapter,包含getCount(),getItem(),getView()等几个基本的方法,为了兼容List,Cursor等数据类型作为数据源,我们专门定义两个适配器来适配他们:ArrayAdapter和CursorAdapter。这两个适配器,就是针对目标接口对数据源进行兼容修饰。

6. 模板方法模式

规定子类方法执行顺序,具体实现逻辑由子类完成。
Android中常见的设计模式_第6张图片

7. 观察者模式

广播通知、事件通知就是使用的观察模式。
我们可以通过BaseAdapter.registerDataSetObserver和BaseAdapter.unregisterDataSetObserver两方法来向BaseAdater注册、注销一个DataSetObserver。当数据集有变化时,会调用DataSetObserver的onChanged()方法;当数据集失效时,会调用DataSetObserver的onINvalidated()方法。

8. 原型模式

比如我们需要一张Bitmap的几种不同格式:ARGB_8888、RGB_565、ARGB_4444、ALAPHA_8等。那我们就可以先创建一个ARGB_8888的Bitmap作为原型,在它的基础上,通过调用Bitmap.copy(Config)来创建出其它几种格式的Bitmap。

当然,android中的设计模式有很多,这里罗列了一些,其他的后续再添加上。

你可能感兴趣的:(android,design,pattern)