Android 设计模式&六大原则

设计模式六大原则

  • 单一职责原则
    一个类只负责一个功能领域的相应职责。也可以说是,就一个类而言,应该只有一个引起它变化的原因。
    思想原则就是高内聚、低耦合。争取不让一个类承担太多的职责。
  • 开放封闭原则
    类、模块、函数等应该是可以扩展的,但不可修改。也就是说对扩展开放,对修改封闭。
  • 里氏替换原则
    所有引用基类(父类)的地方必须能透明地使用其子类的对象。
    将一个基类对象替换成其子类对象,程序将不会产生任何错误和异常,反过来则会报错。
  • 依赖倒置原则
    高层模块(调用端)不应该依赖底层模块(实现类),两者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
    这里所说的抽象是指:接口、抽象类,它们都不能直接实例化;细节是指:实现类。
    模块间的依赖通过抽象发生,实现类之间不发生直接依赖关系。如果实现类之间直接依赖,会耦合,一旦要修改,会同时修改依赖者代码,限制了扩展性。
  • 迪米特原则
    一个应用实体应尽量少的与其他实体发生相互作用。
    应该尽量减少对象之间的交互,如果两个对象之间不必彼此直接通信,那么这两个对象就不应当发生任何直接的相互作用,如果其中的一个对象需要调用另一个对象的某一个方法的话,可以通过第三者转发这个调用。简言之,就是通过引入一个合理的第三者来降低现有对象之间的耦合度。
  • 接口隔离原则
    一个类对另一个类的依赖应该建立在最小的接口上。
    建立单一接口,不要建立庞大的接口,尽量细化接口,接口中的方法尽量少(要适度)。

设计模式分类

设计模式总共23种,按照目的准则分类可分为三类:

  • 创建型(5种)
    单例、工厂方法、抽象工厂、建造者、原型模式。
  • 结构型(7种)
    适配器、装饰、代理、外观、桥接、组合模式、亨元模式。
  • 行为型(11种)
    策略、模板方法、观察者、迭代器、责任链、命令、备忘录、状态、访问者、中介、解释器模式。

随着设计模式发展有新的设计模式出现:规格、对象池、雇工、黑板、空对象模式等,有待补充了解。

GitHub相关Demo
Github设计模式demo

Android 设计模式&六大原则_第1张图片
设计模式demo.JPG

创建型设计模式

  • 单例模式
    保证一个类仅有一个实例,并提供一个访问它的全局访问点。
  • 简单工厂模式
    又称静态工厂方法模式,是由一个工厂对象决定创建出哪一种产品类的实例。
  • 工厂方法模式
    定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到子类。
  • 建造者模式
    将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。
  • 原型模式

结构型模式

  • 适配器模式
    将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
  • 装饰模式
    动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。
  • 代理模式
    也叫做委托代理,为其他对象提供一种代理以控制对这个对象的访问
  • 外观模式
    也叫做门面模式,要求一个子系统的外部与内部的通信必须通过一个统一的对象进行。此模式提供一个高层的接口,使得子系统更易于使用。
  • 桥接模式
    将抽象部分与实现部分分离,使它们都可以独立的变化。
  • 组合模式
    将对象组合成树形结构以表示”部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
  • 亨元模式
    使用共享对象有效地支持大量细粒度的对象。优点:可以减少应用程序创建的对象,降低程序内存的占用,提高程序的性能。

行为性模式

  • 策略模式
    定义一系列的算法,把每一个算法封装起来,并且使它们可相互替换。策略模式使得算法可独立于使用它的客户而独立变化。
  • 模板方法模式
    定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类不改变一个算法的结构即可重定义算法的某些特定步骤。
  • 观察者模式
    又叫做发布-订阅模式,定义对象间一种一对多的依赖关系,每当一个对象改变状态时,则所有依赖于它的对象都会得到通知并被自动更新。
    大话设计模式—观察者模式
  • 迭代器模式
    通过提供一种方法顺序访问一个聚合对象中的各个元素,而又不必暴露该聚合对象中的内部表示。迭代器模式是针对聚合对象(数组、集合、链表)的“访问”而来。通过定义不同的遍历策略来遍历聚合对象。
  • 责任链模式
    避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。
  • 命令模式
    将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
  • 备忘录模式
    在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
  • 状态模式
    当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
  • 访问者模式
    表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
  • 中介模式
    用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。
  • 解释器模式

空着部分有待补充

你可能感兴趣的:(Android 设计模式&六大原则)