欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java設(shè)計(jì)模式中單一職責(zé)原則詳解

 更新時(shí)間:2023年05月11日 11:27:19   作者:_GGBond_  
這篇文章主要介紹了Java設(shè)計(jì)模式中單一職責(zé)原則詳解,單一職責(zé)原則 (SRP) 是軟件設(shè)計(jì)中的一個(gè)重要原則,它要求每個(gè)類只負(fù)責(zé)一個(gè)職責(zé),需要的朋友可以參考下

前言

本博主將用CSDN記錄軟件開發(fā)求學(xué)之路上親身所得與所學(xué)的心得與知識,有興趣的小伙伴可以關(guān)注博主!也許一個(gè)人獨(dú)行,可以走的很快,但是一群人結(jié)伴而行,才能走的更遠(yuǎn)!

一、介紹

單一職責(zé)原則 (SRP) 是軟件設(shè)計(jì)中的一個(gè)重要原則,它要求每個(gè)類只負(fù)責(zé)一個(gè)職責(zé)。 如果類A負(fù)責(zé)兩個(gè)不同職責(zé):職責(zé)1,職責(zé)2。當(dāng)職責(zé)1需求變更而改變A時(shí),可能造成職責(zé)2執(zhí)行錯(cuò)誤。

這個(gè)原則的重要性在于:

  1. 降低類的復(fù)雜度,一個(gè)類只負(fù)責(zé)一項(xiàng)職責(zé);
  2. 提高類的可讀性,可維護(hù)性;
  3. 降低變更引起的風(fēng)險(xiǎn);
  4. 通常情況下,我們應(yīng)當(dāng)遵守單一職責(zé)原則,只有邏輯足夠簡單,才可以在代碼級違反單一職責(zé)原則;只有類中方法數(shù)量足夠少,可以在方法級別保持單一職責(zé)原則;

二、代碼演示

假設(shè)我們有一個(gè)名為Customer的類,它負(fù)責(zé)管理客戶的信息和交易。 現(xiàn)在我們想要對這個(gè)類進(jìn)行改進(jìn),讓它只負(fù)責(zé)一個(gè)職責(zé),也就是管理客戶信息交易。 我們可以考慮采用單一職責(zé)原則,將原來的兩個(gè)職責(zé)分開,讓Customer只負(fù)責(zé)管理客戶信息,而交易職責(zé)則由另一個(gè)類Transaction來負(fù)責(zé)。

// 客戶類,負(fù)責(zé)管理客戶信息和交易  
public class Customer {  
    private String name;  
    private int age;  
    private List<Transaction> transactions;
    public Customer(String name, int age) {  
        this.name = name;  
        this.age = age;  
        this.transactions = new ArrayList<>();  
    }
    public void addTransaction(Transaction transaction) {  
        this.transactions.add(transaction);  
    }
    public void removeTransaction(Transaction transaction) {  
        this.transactions.remove(transaction);  
    }
    public String getName() {  
        return name;  
    }
    public int getAge() {  
        return age;  
    }
    public List<Transaction> getTransactions() {  
        return transactions;  
    }  
}
// 交易類,負(fù)責(zé)管理交易  
public class Transaction {  
    private String description;  
    private double amount;
    public Transaction(String description, double amount) {  
        this.description = description;  
        this.amount = amount;  
    }
    public String getDescription() {  
        return description;  
    }
    public double getAmount() {  
        return amount;  
    }  
}
// 客戶端類,演示單一職責(zé)原則的應(yīng)用  
public class Client {  
    public static void main(String[] args) {  
        // 創(chuàng)建客戶對象  
        Customer customer = new Customer("John", 30);
        // 創(chuàng)建交易對象  
        Transaction transaction1 = new Transaction("Buy Coffee", 10.00);  
        Transaction transaction2 = new Transaction("Sell Stock", 50.00);
        // 添加交易到客戶對象  
        customer.addTransaction(transaction1);  
        customer.addTransaction(transaction2);
        // 獲取客戶信息和交易列表  
        String name = customer.getName();  
        int age = customer.getAge();  
        List<Transaction> transactions = customer.getTransactions();
        // 輸出客戶信息和交易列表  
        System.out.println("Customer name: " + name + ", age: " + age + ", transactions: " + transactions);  
    }  
}

在上面的代碼中,Customer類只負(fù)責(zé)管理客戶信息,它擁有了四個(gè)方法,分別是addTransaction,removeTransactiongetName,getAge。Transaction類只負(fù)責(zé)管理交易,它擁有了兩個(gè)方法,分別是getDescriptiongetAmount

Client類演示了單一職責(zé)原則的應(yīng)用,它創(chuàng)建了一個(gè)Customer對象,并添加了兩個(gè)Transaction對象到它的Customer對象中。最后,Client類獲取了Customer對象的NameTransaction列表,并輸出了它們。

通過上面的示例,我們可以看到單一職責(zé)原則的應(yīng)用可以讓代碼更加簡潔,易于維護(hù)和擴(kuò)展。

到此這篇關(guān)于Java設(shè)計(jì)模式中單一職責(zé)原則詳解的文章就介紹到這了,更多相關(guān)Java單一職責(zé)原則內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談Sharding-JDBC強(qiáng)制路由案例實(shí)戰(zhàn)

    淺談Sharding-JDBC強(qiáng)制路由案例實(shí)戰(zhàn)

    本文主要介紹了淺談Sharding-JDBC強(qiáng)制路由案例實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • JavaFx 實(shí)現(xiàn)按鈕防抖功能

    JavaFx 實(shí)現(xiàn)按鈕防抖功能

    最近Sun公司推出了JavaFX框架,使用它可以利用JavaFX編程語言來開發(fā)富互聯(lián)網(wǎng)應(yīng)用程序(RIA),這篇文章主要介紹了JavaFx 實(shí)現(xiàn)按鈕防抖功能,需要的朋友可以參考下
    2022-01-01
  • 圖文講解IDEA中根據(jù)數(shù)據(jù)庫自動(dòng)生成實(shí)體類

    圖文講解IDEA中根據(jù)數(shù)據(jù)庫自動(dòng)生成實(shí)體類

    這篇文章主要以圖文講解IDEA中根據(jù)數(shù)據(jù)庫自動(dòng)生成實(shí)體類,本文主要以Mysql數(shù)據(jù)庫為例,應(yīng)該會對大家有所幫助,如果有錯(cuò)誤的地方,還望指正
    2023-03-03
  • Java對象轉(zhuǎn)json的方法過程解析

    Java對象轉(zhuǎn)json的方法過程解析

    這篇文章主要介紹了Java對象轉(zhuǎn)json的方法過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Java開發(fā)人員需知的十大戒律

    Java開發(fā)人員需知的十大戒律

    這篇文章主要介紹了Java開發(fā)人員需知的十大戒律,較為詳細(xì)的總結(jié)分析了Java開發(fā)中常見的注意事項(xiàng)與編程技巧,需要的朋友可以參考下
    2015-10-10
  • 阿里規(guī)范:為何boolean類型變量命名禁用is開頭

    阿里規(guī)范:為何boolean類型變量命名禁用is開頭

    這篇文章主要給大家介紹了關(guān)于阿里規(guī)范:為何boolean類型變量命名禁用is開頭的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • shenyu怎么處理sign鑒權(quán)前置到網(wǎng)關(guān)

    shenyu怎么處理sign鑒權(quán)前置到網(wǎng)關(guān)

    這篇文章主要為大家介紹了shenyu怎么處理sign鑒權(quán)前置到網(wǎng)關(guān)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 深入了解java 8的函數(shù)式編程

    深入了解java 8的函數(shù)式編程

    函數(shù)式編程并不是Java新提出的概念,其與指令編程相比,強(qiáng)調(diào)函數(shù)的計(jì)算比指令的計(jì)算更重要;與過程化編程相比,其中函數(shù)的計(jì)算可以隨時(shí)調(diào)用。下面我們來詳細(xì)了解一下吧
    2019-06-06
  • Easypoi 輕松實(shí)現(xiàn)復(fù)雜excel文件導(dǎo)出功能

    Easypoi 輕松實(shí)現(xiàn)復(fù)雜excel文件導(dǎo)出功能

    這篇文章主要介紹了Easypoi 輕松實(shí)現(xiàn)復(fù)雜excel文件導(dǎo)出功能,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • Java中Spring擴(kuò)展點(diǎn)詳解

    Java中Spring擴(kuò)展點(diǎn)詳解

    這篇文章主要介紹了Java中Spring技巧之?dāng)U展點(diǎn)的應(yīng)用,下文Spring容器的啟動(dòng)流程圖展開其內(nèi)容的相關(guān)資料,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06

最新評論