0. 学会设计模式

作者: Shimmer_ | 来源:发表于2021-04-21 23:45 被阅读0次

设计模式是开发过程中不可回避的一个重要应用,通过它我们能写出更加优秀、实用、高效的代码。设计模式在面向对象语言之间通用,它具有以下优点:

  • 可维护(可读性)
  • 可复用
  • 可扩展
  • 灵活性好

设计模式的六大原则:SOLID原则

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

就一个类而言,应该仅有一个引起它变化的原因

实际使用中,我们是尽量满足这个原则,这个原则涉及到一个颗粒度的把握。对于类来说很难进行设计,因为受到很多因素的制约,类需要承担多种职责通常我们针对接口进行单一职责设计,用类实现多个接口,完成多个职责融合

如:Android中的Activity,它就通过实现接口来丰富自己的职责

 public class Activity extends ContextThemeWrapper
      implements LayoutInflater.Factory2,
      Window.Callback, KeyEvent.Callback,
         OnCreateContextMenuListener, ComponentCallbacks2,
         Window.OnWindowDismissedCallback, WindowControllerCallback,
         AutofillManager.AutofillClient {
             ...
             ...
 }

2. 开闭原则(Open Closed Principle,OCP)

对扩展开放,对修改关闭

这是六大原则中最重要、基础的原则。其他5个原则如果说是指导设计的工具和方法,开闭原则则是指导思想,它没有具体的做法,需要体会使用

如:Android中接入打印功能时只有打印文字功能,一旦业务扩展需要支持打印图片功能,这时符合开闭原则的做法是:不对已有的打印功能接口及实现类进行修改(对修改关闭),实现新的打印功能接口实现类,在类中支持打印图片(对扩展开放)。

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

子类型必须能够替换掉他们的父类型

这在我们的开发过程中十分有帮助,我们不需要关系功能的实现,只在乎有满足功能的类来工作

如:Android开发中经常有使用到上下文Context的地方,我们只需要在传入的地方定义Context,在使用时传入Application、activity都可以

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

最少知识原则:一个对象应该对其他对象有最少的了解
如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法时,可以通过第三者转发这个调用

目的使得类与类直接关系简洁明了,每个类暴露的对外操作越少,那么对应的耦合就越弱,对应的复用率就越高。

如:Android中工具类的使用,查询数据时不需要直接操作数据库类;访问网络时不需要直接调用网络请求类进行连接。这在后续的修改和调整时都能方便的进行更新

5. 接口隔离原则 (Interface Segregation Principle,ISP)

客户端不应该依赖它不需要的接口、类间的依赖关系应该建立在最小的接口上
保持接口的纯洁性:小(尽量单一职责)、高内聚(减少对外暴露的方法,降低修改成本及风险)

目的就是建立单一接口,接口尽量细化,接口中方法尽量少(与单一原则的区别是:单一职责强调的是职责单一,职责可能包含多个方法)

如:Android中点击回调接口设计,单击、长按、双击都有各自的接口(而不是写在同一个接口中,完成“点击”这一职责)

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

高层模块不应该依赖低层模块。两个都应该依赖抽象
抽象不应该依赖细节,细节应该依赖抽象

更加简洁的定义就是“面向接口编程”

如:Android开发中常使用的三方SDK调用、方法回调等,不关心功能的实现,只要求满足输入输出的类型。如MVP开发模式中,我们定义P层抽象应具有的功能,V层不需要关系P层的具体实现

设计原则的初衷是服务应用使之质量更高,但应用最终目的是交付使用的,所以对于使用这些原则要做到尽量而不是死抠,要灵活使用而不盲目过度设计

设计模式的三大类型及23种设计模式

相关文章

  • 0. 学会设计模式

    设计模式是开发过程中不可回避的一个重要应用,通过它我们能写出更加优秀、实用、高效的代码。设计模式在面向对象语言之间...

  • 设计模式之开闭原则

    相关链接:0. 设计模式之六大原则总结1. 设计模式之单一职责原则2. 设计模式之里式替换原则3. 设计模式之依赖...

  • 设计模式之迪米特法则

    相关链接:0. 设计模式之六大原则总结1. 设计模式之单一职责原则2. 设计模式之里式替换原则3. 设计模式之依赖...

  • 设计模式之依赖倒置原则

    相关链接:0. 设计模式之六大原则总结1. 设计模式之单一职责原则2. 设计模式之里式替换原则3. 设计模式之依赖...

  • 设计模式之接口隔离原则

    相关链接:0. 设计模式之六大原则总结1. 设计模式之单一职责原则2. 设计模式之里式替换原则3. 设计模式之依赖...

  • 设计模式之单一职责原则

    相关链接:0. 设计模式之六大原则总结1. 设计模式之单一职责原则2. 设计模式之里式替换原则3. 设计模式之依赖...

  • 设计模式之里式替换原则

    相关链接:0. 设计模式之六大原则总结1. 设计模式之单一职责原则2. 设计模式之里式替换原则3. 设计模式之依赖...

  • 每天一个设计模式·策略模式

    策略模式原文地址 更多《设计模式系列教程》 更多免费教程 0. 项目地址 作者按:《每天一个设计模式》旨在初步领会...

  • 3.JAVA工厂方法模式总结

    之前的简单工厂模式并不属于23种GOF设计模式之一,今天我们将介绍真正的工厂设计模式,工厂方法模式。 0.抛出问题...

  • 0. java的设计模式

    java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模...

网友评论

    本文标题:0. 学会设计模式

    本文链接:https://www.haomeiwen.com/subject/eegtrltx.html