【设计模式】面向对象六大原则

【设计模式】面向对象六大原则
设计模式

设计模式

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化。设计模式分为三种类型,分别是:创建型模式、结构型模式,行为型模式。

23种设计模式

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

六大原则

1,单一职责原则(Single Responsibility Principle, SRP)

定义:一个类应只包含单一的职责。

  • 如果一个类职责过多,代码量就多,而使用起来显得过分冗余,不利于复用。
  • 如果修改某个职责,可能影响另一个职责。

2,开放封闭原则(Open - ClosedPrinciple ,OCP)

定义:一个模块、类、函数应当是对修改关闭,对扩展开放。

  • 修改原有的代码可能会导致原本正常的功能出现问题。
  • 当需求改变时,最好通过扩展来实现,增加新的方法或类满足需求,而不是去修改原有代码。

3,里氏代换原则( Liskov Substitution Principle ,LSP )

定义:使用父类的地方能够使用子类来替换,反过来,则不行。

  • 使用子类对象去替换父类对象,程序将不会产生错误。
  • 程序中尽量使用基类类型来对对象进行定义,如父类的子类引用,而在运行时再确定其子类类型,用子类对象来替换父类对象。

4,依赖倒转原则( Dependence Inversion Principle ,DIP )

定义:抽象不应该依赖于细节,细节应当依赖于抽象。

  • 即要面向接口编程,而不是面向具体实现去编程。
  • 高层模块不应该依赖低层模块,应该去依赖抽象。
  • 方法定义时,传入对象用抽象类型,实际使用时传入子类对象。

5,接口隔离法则(Interface Segregation Principle,ISL)

定义:一个类对另一个类的依赖应该建立在最小的接口上。

  • 一个类不应该依赖他不需要的接口,接口的方法全要用得到。
  • 接口粒度要尽可能小,尽量不能再分割。一个接口的方法过多,可以拆成多个接口。

6,迪米特法则(Law of Demeter, LoD)

定义:一个类尽量不要与其他类发生关系

  • 一个类对其他类知道的越少越好,耦合越小。导入的东西越少越好。
  • 当修改一个类时,其他类的影响就越小,发生错误的可能性就越小。

附件

设计模式Demo
GitHub源码:https://github.com/wzmyyj/Design-Pattern

上一篇:JAVA如何动态加载jar,并调用对应的函数?


下一篇:编译原理笔记3:有限自动机