面向对象六大原则
- 单一职责原则:一个类中应该是一组相关性很高的函数、数据的封装。
- 开闭原则:对修改关闭,对拓展关闭。
- 里氏替换原则:所有引用基类的地方必须能透明得使用其子类的对象。即子类就可以替换父类出现。
- 依赖倒置原则:依赖高层抽象,不能依赖底层实现。
- 接口隔离原则:将接口拆分成更具体的接口,根据不同需求建立依赖。
- 迪米特原则:即最小知识原则。一个类应该与和它关系最直接的类建立连接。
设计模式在Android源码中的实现
-
单例模式
最优实现:静态内部类方式、枚举方式、容器方式源码:Context.getSystemSerivce()采用了容器方式实现单例模式将service通过键值对的方式存在HashMap中。
-
Builder模式
将一个复杂的对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。
源码:AlertDialog、OkHttp
-
原型模式
clone()
源码:ArrayList
- 工厂方法模式
源码:Iterable
抽象工厂
策略模式:
源码:属性动画插值器
- 状态模式:
源码:WiFiSetting
- 责任链模式:
源码:view事件分发
- 解释器模式:
源码:PackageManagerService(app扫描)
- 命令模式:
源码:InputDispatcher事件输入
- 观察者模式:
源码:notifyDataSetChange、Rxjava
- 备忘录模式:
源码:onSaveInstanceState
- 迭代器模式:
源码:List、Map、Curso
- 模板方法模式:
源码:AsyncTask
- 访问者模式:
源码:APT(注解)
- 中介者模式:
源码:Keyguard锁屏
- 代理模式:
源码:Binder
- 组合模式:
源码:View、ViewGroup
- 适配器模式:
源码:Adapter
- 装饰器模式:
源码:ContextWrapper
- 享元模式:
源码:Message
- 外观模式:
源码:context、ContextImpl
- 桥接模式:
源码:WindowManagerService