设计模式
单一性原则
一个类只干一件事情
从 Activity 中剥离 Adapter
开闭原则
对扩展开放,对修改封闭
从 switch-case 谈起
里氏替换原则
父类,子类?
对多态的重新认识,子类不覆盖父类方法
白马与马
依赖倒置原则
依赖于抽象,而不是依赖于具体
模版方法
从 WebService 到 JSON
接口隔离原则
类之间的依赖,建立于最小粒度的接口
看人下菜碟
宽窄接口
迪米塔法则
不要和陌生人说话
总结
组合,还是继承?
可插拔技术
面向接口编程
创建型设计模式
简单工厂
Android 中的使用场景:Activity 的 onCreate 方法
Android 中的一个例子:文件存储
工厂模式
简单工厂与工厂的微小区别
反射与工厂模式的配合
抽象工厂模式
与工厂模式的区别
文件存储的抽象工厂实现
单例模式
序列化
多例
Android 中的使用场景:ImageLoader
原型模式
浅拷贝和深拷贝
一个例子:孙悟空的分身
Android 中的使用场景:Intent
生成器模式
编写一个例子:绘制笑脸
变体:Director 的蜕化
Android 中的使用场景:AlertDialog
构造型设计模式(1)
适配器模式
类适配器和对象适配器一个例子:变压器
Android 中的使用场景:Adapter
桥接模式
两个维度的简单工厂
加法,还是乘法?
在 Android 中的应用:ListVIew 和 Adapter
编写一个例子:蜡笔与水彩笔
代理模式
在 Android 中的实现:Binder 与 AIDL
静态代理和动态代理
远程代理
虚拟代理
保护代理
智能引用Android 插件化的一种实现方式:静态代理
构造型设计模式(2)
组合模式
温习一下递归算法
实现的两种方式一个现实中的例子:山上有座庙
一个现实中的例子:文件夹与文件
Android 中的使用场景:View 和 ViewGroup
享元模式
不变模式
享元是多例与不变模式的组合
自己编写一个例子:围棋
Android 中的使用场景:String
装饰器模式
编写一个例子:炒菜自定义 BaseActivity 基类
Android 中的使用场景:ContextWrapper
外观模式
现实中的例子:手机界面
Android 中的使用场景:Context 和 ContextImpl
行为型设计模式(1)
职责链模式
在 Android 中的应用:事件分发机制
写一个例子:游戏中的伤害计算
模版方法模式
在 Android 中的应用 1:AsyncTask
在 Android 中的应用 2:Activity 的生命周期函数
命令模式
例子 1:玉皇大帝派太上老君封孙悟空为齐天大圣
回滚(undo)
在 Android 中的应用 1:AAPT
备忘录模式
回滚机制的另一种实现
例子:单机游戏的保存和加载
宽窄接口:IMemento在 Android 中的应用:onSaveInstanceState
行为型设计模式(2)
迭代器模式
外部迭代器和内部迭代器
在 Android 中的应用:Cursor
策略模式
在 Android 中的应用:动画
在 Android 中的应用 2:Comparator
例子:商品打折
观察者模式
例子:RSS
在 Android 中的应用 1:Adapter 的 notifyDataSetChanged 方法
在 Android 中的应用 2:BroadcastReceiver
在 Android 中的应用 3:事件总线 EventBus
中介者模式
在 Android 中的应用:Activity
中控件间通信
编写一个例子:房产中介
与观察者的联系
状态模式
写一个例子:变形金刚
在 Android 中的应用:View 的 onVisibilityChanged 方法
在 App 中的应用:用户登录