回顾 SOLID 设计原则

在前面的五篇文章当中,我们提到了 SOLID 设计原则,分别为

  • 单一功能原则 Single Responsibility Principle
  • 开放封闭原则 Open-Closed Principle
  • 依赖反转原则 Dependency Inversion Principle
  • 里氏替换原则 Liskov Substitution Principle
  • 介面隔离原则 Interface Segregation Principles

同样让我尝试用一段话来整理这些内容之间的关系:

如果以公司部门的角度出发,「单一功能原则」确保这个部门只会对应、负责一种业务需求,也就是说,当某种业务有新的需求或旧有需求变化的时候,公司可以很明确知道找哪个部门负责,在这样的情况下,只要请该部门开始变动,而不会影响其他部门的运作,确保公司的稳定性。

「开放封闭原则」提到,当负责的部门因应新的需求时,可以快速透过「扩展」的方式来加入、整合新的资源(譬如外包厂商)来产生新的功能,而不用大幅度的更动原部门的架构(开放扩展、封闭修改)。

「依赖反转原则」提到,当负责的部门开始依赖其他资源的时候,譬如外包厂商,需要订定好「互动规则」,以避免外包厂商变动的时候(譬如更新实作方式、更新产出规格等)时,负责的部门也需要跟着变动。

「里氏替换原则」提到,从客户的角度来看,今天不管这间公司的部门做了什麽样的变动、更新,都需要提供同样的服务给客户,以避免有错误的期待或操作。

最後,「介面隔离原则」提到,从客户的角度来看,公司部门不应该提供多余的服务或功能给客户,以避免当这些服务或功能的改变,造成客户产生不必要的错误。

下一步?

以上的五点,确保了程序码在面对需求变动时的扩展性、维护性、稳定性。不过这些最终都只是「原则」。在因应不同变化的时,为了要满足这些原则,就会产生出不同的解决方案。而这些解决方案,就是我们之後要提到的「设计模式」。

什麽是设计模式

设计模式就是人们根据一些常见的问题,整理出来的「解决方案」。这些解决方案其实也只是一张蓝图,实际的执行方式与内容,还是得看不同问题的细节,以及使用的程序语言为何。

所以接下来提到不同的设计模式,每一个模式都有他各自要解决的问题,而设计模式也不是万能,有其使用的范围与局限性。但如果能够认识一些常见的设计模式,未来在面对问题的时候,就会有更多的蓝图可以参考使用罗。

设计模式的类别

设计模式主要分成三大类,分别是

  • Creational Patterns: 关注於如何「创造」新的物件,如何重复使用已有的程序,提高面对需求变动时的弹性
  • Structural Patterns: 关注於如何「组合」物件,成为一个新的、更大的物件,然後能够面对各种不同的需求
  • Behaviroral Patters: 关注於物件之间如何「沟通」,让物件彼此之间能够更有效的完成任务

在接下来的日子当中,会陆续开始介绍不同的设计模式,也许不会把 GoF 提出的 23 种全部讲完,但希望能够在过程中更了解不同的设计模式在处理的问题,以及如何解决问题


<<:  DAY 19 Big Data 5Vs – Variety(速度) EMR (2)

>>:  Day23 - Online DDL

事件回力镖 - 捕获与冒泡

传递机制听起来非常没有画面感,於是擅自替传递机制取了绰号叫回力镖,如同回力镖有去程,回程以及猎捕到猎...

权威认证(Authoritative accreditation)

-NIST SDLC 和 RMF -认证和认可 (C&A) -授权决定 认证(Certif...

【Day 13】粗暴後门,Duck 不必 - Windows 简单後门

环境 Windows 10 1709 简介 後门 当入侵者成功取得某台机器的权限後,可能会希望之後仍...

Day10. 人与人之间偶有摩擦,物体与物体之间叫做碰撞 - Collision(上)

我们先前已经有了碰撞,但是之前我们其实都是使用预设的物理现象与engine模组来制造碰撞,其实并没有...

那些被忽略但很好用的 Web API / MessageChannel

热线你和我,这是一条情感的线路,属於你和我。 昨天我们认识了 PostMessage,它可以让我们...