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

java面向?qū)ο笤O(shè)計原則之里氏替換原則示例詳解

 更新時間:2021年10月14日 10:32:11   作者:guoyp2126  
這篇文章主要為大家介紹了java面向?qū)ο笤O(shè)計原則之里氏替換原則示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪

概念

里氏替換原則是任何基類出現(xiàn)的地方,子類一定可以替換它;是建立在基于抽象、多態(tài)、繼承的基礎(chǔ)復用的基石,該原則能夠保證系統(tǒng)具有良好的拓展性,同時實現(xiàn)基于多態(tài)的抽象機制,能夠減少代碼冗余。

實現(xiàn)

里氏替換原則要求我們在編碼時使用基類或接口去定義對象變量,使用時可以由具體實現(xiàn)對象進行賦值,實現(xiàn)變化的多樣性,完成代碼對修改的封閉,擴展的開放。如:商城商品結(jié)算中,定義結(jié)算接口Istrategy,該接口有三個具體實現(xiàn)類,分別為PromotionalStrategy (滿減活動,兩百以上百八折)、RebateStrategy (打折活動)、 ReduceStrategy(返現(xiàn)活動);

public interface Istrategy {
    public double realPrice(double consumePrice);
}
public class PromotionalStrategy implements Istrategy {
    public double realPrice(double consumePrice) {
        if (consumePrice > 200) {
            return 200 + (consumePrice - 200) * 0.8;
        } else {
            return consumePrice;
        }
    }
}
public class RebateStrategy implements Istrategy {
    private final double rate;
    public RebateStrategy() {
        this.rate = 0.8;
    }
    public double realPrice(double consumePrice) {
        return consumePrice * this.rate;
    }
}
public class ReduceStrategy implements Istrategy {
    public double realPrice(double consumePrice) {
        if (consumePrice >= 1000) {
            return consumePrice - 200;
        } else {
            return consumePrice;
        }
    }
}

調(diào)用方為Context,在此類中使用接口定義了一個對象。其代碼如下:

public class Context {
    //使用基類定義對象變量
    private Istrategy strategy;
    // 注入當前活動使用的具體對象
    public void setStrategy(Istrategy strategy) {
        this.strategy = strategy;
    }
    // 計算并返回費用
    public double cul(double consumePrice) {
        // 使用具體商品促銷策略獲得實際消費金額
        double realPrice = this.strategy.realPrice(consumePrice);
        // 格式化保留小數(shù)點后1位,即:精確到角
        BigDecimal bd = new BigDecimal(realPrice);
        bd = bd.setScale(1, BigDecimal.ROUND_DOWN);
        return bd.doubleValue();
    }
}

Context 中代碼使用接口定義對象變量,這個對象變量可以是實現(xiàn)了lStrategy接口的PromotionalStrategy、RebateStrategy 、 ReduceStrategy任意一個。

拓展

里氏替換原則和依賴倒置原則,構(gòu)成了面向接口編程的基礎(chǔ),正因為里氏替換原則,才使得程序呈現(xiàn)多樣性。

以上就是java面向?qū)ο笤O(shè)計原則之里氏替換原則示例詳解的詳細內(nèi)容,更多關(guān)于java面向?qū)ο笤O(shè)計里氏替換原則的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java網(wǎng)絡編程之識別示例 獲取主機網(wǎng)絡接口列表

    java網(wǎng)絡編程之識別示例 獲取主機網(wǎng)絡接口列表

    一個客戶端想要發(fā)起一次通信,先決條件就是需要知道運行著服務器端程序的主機的IP地址是多少。然后我們才能夠通過這個地址向服務器發(fā)送信息。
    2014-01-01
  • 詳解spring mvc 請求轉(zhuǎn)發(fā)和重定向

    詳解spring mvc 請求轉(zhuǎn)發(fā)和重定向

    這篇文章主要介紹了詳解spring mvc 請求轉(zhuǎn)發(fā)和重定向,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 深入理解Java注解的使用方法

    深入理解Java注解的使用方法

    這篇文章主要為大家詳細介紹了Java注解的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 聊聊Java 成員變量賦值和構(gòu)造方法誰先執(zhí)行的問題

    聊聊Java 成員變量賦值和構(gòu)造方法誰先執(zhí)行的問題

    這篇文章主要介紹了聊聊Java 成員變量賦值和構(gòu)造方法誰先執(zhí)行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • javaSE中數(shù)組的概念與使用詳細教程

    javaSE中數(shù)組的概念與使用詳細教程

    這篇文章主要給大家介紹了關(guān)于javaSE中數(shù)組的概念與使用的相關(guān)資料,數(shù)組在內(nèi)存中是一段連續(xù)的空間,空間的編號都是從0開始的,依次遞增,該編號稱為數(shù)組的下標,需要的朋友可以參考下
    2023-08-08
  • 使用vscode搭建javaweb項目的詳細步驟

    使用vscode搭建javaweb項目的詳細步驟

    我個人是很喜歡VsCode的,開源免費、功能全面,所以為了方便,我把我?guī)缀跛械倪\行都集成到了VsCode上來,JavaWeb也不例外,下面這篇文章主要給大家介紹了關(guān)于使用vscode搭建javaweb項目的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • IDEA使用入門小白操作教程

    IDEA使用入門小白操作教程

    IntelliJ IDEA,就是Java語言開發(fā)工具 (IDE) 功能與Eclipse同類!本文通過圖文并茂的形式給大家介紹IntelliJ IDEA使用入門教程,非常適合新手小白操作,感興趣的朋友一起看看吧
    2020-10-10
  • Java?Swing實現(xiàn)畫板的簡單操作

    Java?Swing實現(xiàn)畫板的簡單操作

    這篇文章主要介紹了Java?Swing實現(xiàn)畫板的簡單操作,修改顏色,更改圖形,清除,任務欄按鈕,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 輕松理解Java面試和開發(fā)中的IoC(控制反轉(zhuǎn))

    輕松理解Java面試和開發(fā)中的IoC(控制反轉(zhuǎn))

    在Java開發(fā)中,IoC意 味著將你設(shè)計好的類交給系統(tǒng)去控制,而不是在你的類內(nèi)部控制。這稱為控制反轉(zhuǎn)。下文給大家介紹Java面試和開發(fā)中的IoC(控制反轉(zhuǎn))知識,需要的朋友參考下吧
    2017-07-07
  • 如何基于springcloud模擬RPC調(diào)用(Feign)

    如何基于springcloud模擬RPC調(diào)用(Feign)

    這篇文章主要介紹了如何基于springcloud模擬RPC調(diào)用(Feign),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04

最新評論