热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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-设计模式
  • 23种设计模式

推荐阅读
author-avatar
潇洒D-An_na
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有