面向對象原則之單一職責原則

單一職責原則

基本介紹

單一職責原則(Single Responsibility Principle, SRP),用來控制類的粒度大小,一個類只負責一個功能領域中的相應職責,在軟件系統種,一個類承擔的職責越多,它被複用的可能性就越小,而且一個類承擔的職責過多,就相當於將這些職責耦合在一起,當其中一個職責變化時,可能會影響其他職責的運作,因此要將這些職責進行分離,將不同的職責封裝在不同的類中,即將不同的變化原因封裝在不同的類中,如果多個職責總是同時發生改變則可以將它們封裝在同一類中。單一職責原則是實現高內聚、低耦合的指導方針。

代碼示例

下面通過一個例子來更好的理解單一職責原則:

public class CustomerData {

    /**
     * 連接數據庫
     */
    public void connectionDataBase(){
    }

    /**
     * 客戶信息list
     */
    public void listCustomer(){
    }
}

從上述代碼可以看到有一個CustomerData類,擁有connectionDataBaselistCustomer兩個方法,connectionDataBase是用來連接數據庫,而listCustomer是用來獲取客戶信息的,兩個方法分別負責不同領域的職責。如果在其他類種也需要連接數據庫或者查詢客戶信息時,則很難實現代碼重用。無論是修改數據庫連接方式或者修改客戶信息查詢方法,都會引起該類的變更,違反了單一職責的宗旨。

下面我們來對CustomerData類進行重構,以下是重構後的代碼:

public class CustomerData {
    /**
     * 客戶信息list
     */
    public void listCustomer(){
    }
}

public class DataBaseUtils {
    /**
     * 連接數據庫
     */
    public void connectionDataBase(){
    }
}

我們將connectionDataBase方法獨立出來了,放到了DataBaseUtils類中,用來進行數據庫相關的操作,CustomerData類保留了listCustomer方法,用來獲取客戶數據。經過一番重構之後,可以看到職責更加清晰了,無論如何修改,都不會影響到對方。

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