在稍微有点开发经验的基础上,再次重新学习了设计模式,本系列文章会主要讲解 23 种设计模式的运用场景,以及优缺点,由于博主主要从事 Android 相关开发工作,文末可能会举例说明一下 设计模式在Android 源码中应用。

设计模式分类

创建型模式
  • 工厂模式(Factory Pattern)
  • 抽象工厂模式(Abstract Factory Pattern)
  • 单例模式(Singleton Pattern)
  • 建造者模式(Builder Pattern)
  • 原型模式(Prototype Pattern)

结构型模式
  • 适配器模式(Adapter Pattern)
  • 桥接模式(Bridge Pattern)
  • 组合模式(Composite Pattern)
  • 装饰器模式(Decorator Pattern)
  • 外观模式(Facade Pattern)
  • 享元模式(Flyweight Pattern)
  • 代理模式(Proxy Pattern)

行为型模式
  • 责任链模式(Chain of Responsibility Pattern)
  • 命令模式(Command Pattern)
  • 解释器模式(Interpreter Pattern)
  • 迭代器模式(Iterator Pattern)
  • 中介者模式(Mediator Pattern)
  • 备忘录模式(Memento Pattern)
  • 观察者模式(Observer Pattern)
  • 状态模式(State Pattern)
  • 策略模式(Strategy Pattern)
  • 模板模式(Template Pattern
  • 访问者模式(Visitor Pattern)

扩展篇
  • 过滤器模式(Filter、Criteria Patter
  • 空对象模式(Null Object Patter

面向对象的六大原则

单一职责原则 (SRP)

就一个类而言,应该仅有一个引起它变化的原因。一个类中是一组相关性和高的函数,一个类尽量只实现一个功能。

开闭原则 (OCP)

程序中的对象应该对应扩展是开放的,对于修改是封闭的。当一个类实现了一个功能的时候,如果想要改变这个功能不是去修改代码,而是通过扩展的方式去实现。实现该类提供的接口方法,然后注入到该类中,通过这种方法去实现功能的改变。

里氏替换原则 (LSP)

所有引用基类的地方必须能透明的使用其子类对象。只要父类能出现的地方子类就可以出现,替换为子类也不会产生任何的错误。开闭原则一般可以通过里氏替换实现对扩展开放,对修改关闭的效果。

依赖倒置原则 (DIP)

模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的。高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

接口隔离原则 (ISP)

客户端不应该依赖它不需要的接口。建立简洁单一的接口,不要建立提供一些用不着方法的臃肿接口

迪米特原则 (LOD)

一个对象应该对其他对象有最少的了解。通俗的说,一个类应该对自己需要耦合或调用的类知道的越少越好,类的内部如何实现与调用者或依赖者没关系。迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用率才可以提高。

推荐

书籍《设计模式之禅》