设计模式

面向对象六大原则

  • 单一职责原则:一个类中应该是一组相关性很高的函数、数据的封装。
  • 开闭原则:对修改关闭,对拓展关闭。
  • 里氏替换原则:所有引用基类的地方必须能透明得使用其子类的对象。即子类就可以替换父类出现。
  • 依赖倒置原则:依赖高层抽象,不能依赖底层实现。
  • 接口隔离原则:将接口拆分成更具体的接口,根据不同需求建立依赖。
  • 迪米特原则:即最小知识原则。一个类应该与和它关系最直接的类建立连接。

设计模式在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

你可能感兴趣的:(设计模式)