Home架构架构师训练第三周-设计模式

架构师训练第三周-设计模式

内容纲要

本周内容是设计模式!常用的常见的在上一篇文章的技能图中已列出,挨个过下去理解学习,是必不可少的!本篇阐述下个人理解的什么是设计模式,以及为什么要用设计模式,因为身边也包括自己,设计模式是不停的看(应该是只在面试的时候),不停的忘,工作中也很少用的到!

什么是设计模式

  • 每种模式都描述了一种问题的通用解决方案,这种问题在我们的环境中不停的出现;
  • 设计模式是一种可==重复使用==的解决方案。

一个模式的四个部分:

  • 模式的名称 – 由少量的字组成的名称,有助于表达我们的设计;
  • 待解问题 – 描述了何时需要运用这种模式,以及运用模式的环境(上下文);
  • 解决方案 – 描述了组成设计的元素(类和对象),它们的关系,职责以及合作,但这种解决方案是抽象的,它不代表具体的实现;
  • 结论 – 运用这种方案所带来的利和弊,主要是指它对系统的弹性,扩展性和可移植性的影响。

每种模式可以参照上面这四部分去学习总结!


为什么要用设计模式

先看下图
file

如图中内容所示:

  • 一款好的应用程序应该是一个强内聚,低耦合的程序;
  • 要实现强内聚低耦合,得依据面向对象设计(OOD)原则;
  • 要满足面向对象设计(OOD)原则,得通过设计模式方案;
  • 在往上,框架一般都已集成好各种设计模式。

所以:CURD的程序员的工作基本都在框架和应用程序之间,用不到设计模式也很正常。
由此可见:设计模式是解决方案,面向对象设计原则是核心思想!


常用的面向对象设计原则有哪些

单一职责原则(SRP)
  • 就一个类而言,应该仅有一个引起它变化的原因。
    在SRP中我们把职责定义为‘变化的原因’,如果能够想到多于一个的动机去改变一个类,那 么这个类就具有多于一个的职责。
开放封闭原则(OCP)
  • 软件实体(类,模块,函数等等)应该是可以扩展的,但是不可修改的。
    其具有两个主要特征:

    • 对于扩展是开放的;
    • 对于更改是封闭的;
Liskov替换原则(LSP);
  • 子类型必须能够替换掉它们的基类型。
    简单的说就是凡是使用基类的地方,一定也适用于其子类。
依赖倒置原则(DIP)
  • 高层模块不应该依赖于底层模块,两者都应该依赖于抽象;
  • 抽象不应该依赖于细节,细节应该依赖于抽象。
    依赖倒置不仅仅是依赖关系的倒置,也是接口所有权的倒置,也就是著名的hollywood原则:Don’t call me, I’ll call you! 就是低层模块实现了再高层模块中声明并被高层模块调用的接口。
接口隔离原则(ISP)
  • 不应该强迫客户依赖于它们不用的方法。

每种原则用一两句即可简述,但想要用好活用,功夫不会少下!

综述:软件开发中,面向对象设计原则是核心思想,设计模式是解决方案!要做好软件,这两块不得不去掌握理解!

打赏
发表评论

电子邮件地址不会被公开。