iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 21
0
Modern Web

JS Design Pattern 系列 第 21

JS Design Pattern Day21-單一職責原則 SRP(上)

第21天。以前看了某一部漫畫之後,我就很喜歡21這個數字了。人真是容易被改變。

單一職責原則

從這集開始,我們將從另一個角度來看設計模式,在這裡我們將從之前的練習中一直講到的幾個原則來做個整理。首先第一個要說的是:單一職責原則SRP(Single Responsibility Principle)。
單一職責原則是在SOLID中被提及的原則之一。SOLID是Robert C. Martin所提出的的五個物件導向程式設計基本原則的縮寫,這五個原則分別是:

  • Single responsibility principle (SRP單一職責原則)
  • Open-Close principle (OCP開放-封閉原則)
  • Liskov substitution principle (LSP里氏替換原則)
  • Interface segregation principle (ISP介面隔離原則)
  • Dependency inversion principle (DIP依賴反轉原則)
    而單一職責原則指出,一個類別應該只有一個導致變化的原因。當我們的方法負責多職責時,若遇需求變更我們將要修改其中一個職責的話,過程中可能會因此影響到其他職責導致不確定因素增加。
    我們一樣直接舉例解釋:
    假設今天要做一個modem傳送資料
var modem = function (phoneNumber,data) {
    var connect = dail();
    send();
    function dail() {
        //省略
    }

    function hangup() {
        //省略
    }

    function recv() {
        //省略
    }

    function send() {
        connect.sendData(data);
    }
};

過程中會先建立連線,然後拿建立連線的物件去傳送資料。這時候就會發現當我們如果修改了dial物件就可能會影響到其他跟建立連線不相關的物件。如果我們依照職責(建立連線、傳送資料)來分類,並各自獨立這些物件,維護起來就會簡潔許多:

var Connect = function () {
    function dail() {
        //省略
    }

    function hangup() {
        //省略
    }
    return connect;
};

var DataHandle = function (data, connect) {
    function recv() {
        //省略
    }

    function send() {
        connect.sendData(data);
    }
};

以上是示意,下一部分將直接拿我們之前舉過的模式範例來練習一下。


上一篇
JS Design Pattern Day20-配接器模式 Adapter
下一篇
JS Design Pattern Day22-單一職責原則 SRP(下)
系列文
JS Design Pattern 30

尚未有邦友留言

立即登入留言