P1:單一職責原則(SRP)

一、定義

Single Responsibility Principle,簡稱SRP,類的職責要單一,不要講過多的職責功能放到一個類中。
一個類只負責一個功能領域中的相應職責。
如果一個類的所做的事情很多,就難以實現複用,而且各種職責的耦合度會變高。所以,應該將不同職責封裝在不同類中,不同的功能變化封裝在不同類中。這樣,接口的功能比較專一,可讀性、複用性都很高,也容易維護。

二、設計思路

假設我們要設計一個系統,有如下登錄、註冊、支付等功能,類結構如下:

    /**
     * 總控制類
     */
    @Controller
    public class userController{
        /**
         * 登錄
         */
        public void login(){
        	// TODO 
        }
 
        /**
         * 註冊
         */
        public void register(){
        	// TODO
        }
        /**
         * 支付(支付寶)
         */
        public void aliPay(){
        	// TODO
        }
 
        /**
         * 支付(微信)
         */
        public void wXPay(){
        	// TODO
        }       
    }

如果我們按上面的類進行設計,則各種功能都混雜在一起,代碼可讀性很差,後期維護成本也很大。
所以我們要對UserController進行拆解,實現高內聚、低耦合:

public class LoginController(){}
public class registerController(){}
public class payController(){
    // TODO 支付類可以定義一個公共接口,分別有支付寶、微信支付的服務的實現:aliPayService\wXPayService
}

此外,關於職責單一的理解,我們還可以延伸到接口層面,也就是一個接口內部只做一種單一職責的功能,儘量不要將一個接口做成大雜燴。否則,後期同樣會帶來很大的運維成本。
END.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章