国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

設計模式之開閉原則:如何優(yōu)雅地擴展軟件系統(tǒng)

這篇具有很好參考價值的文章主要介紹了設計模式之開閉原則:如何優(yōu)雅地擴展軟件系統(tǒng)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

設計模式之開閉原則:如何優(yōu)雅地擴展軟件系統(tǒng),設計模式,設計模式,開閉原則,java

在現(xiàn)代軟件開發(fā)中,設計模式是解決常見問題的最佳實踐。其中,開閉原則作為面向對象設計的六大基本原則之一,為軟件系統(tǒng)的可維護性和擴展性提供了強大的支持。本文將深入探討開閉原則的核心理念,以及如何在實際項目中運用這一原則,以便更好地設計軟件系統(tǒng)。

一、開閉原則的核心思想

開閉原則,也被稱為“對擴展開放,對修改封閉”,意味著軟件實體(如類、模塊、函數(shù)等)應該通過擴展來增加功能,而不是通過修改已有的代碼。這意味著在設計軟件時,我們應該盡量使代碼具有可復用性和可擴展性,以便于在未來添加新功能時不需要修改已有的代碼。

二、開閉原則在實踐中的應用

假設我們正在設計一個電商系統(tǒng),其中包含不同類型的商品,有普通商品和折扣商品,每種商品有不同的價格計算方式。

Product接口

一開始我們有一個Product接口

public interface Product {
    double getPrice();
}
?普通商品類
public class NormalProduct implements Product {
    private double price;

    public NormalProduct(double price) {
        this.price = price;
    }

    @Override
    public double getPrice() {
        return this.price;
    }
}

隨著業(yè)務發(fā)展,我們需要添加折扣商品,如果直接修改Product類或者NormalProduct類來支持折扣邏輯,就違反了開閉原則。正確的做法是擴展一個新的類。

折扣商品類
public class DiscountedProduct implements Product {

    private double originalPrice;
    private double discountRate;

    public DiscountedProduct(double originalPrice, double discountRate) {
        this.originalPrice = originalPrice;
        this.discountRate = discountRate;
    }

    @Override
    public double getPrice() {
        return this.originalPrice * (1 - discountRate);
    }
}

這樣,在添加新的折扣商品類型時,我們并沒有修改原有的Product接口或NormalProduct類,而是增加了新的實現(xiàn)類DiscountedProduct來滿足新的需求,這就是開閉原則的體現(xiàn)。

在客戶端代碼中,可以通過產(chǎn)品接口處理不同類型的商品。

購物車類
public class ShoppingCart {
    
    private List<Product> products;

    public void addProduct(Product product) {
        products.add(product);
    }

    public double getTotalPrice() {
        return products.stream().mapToDouble(Product::getPrice).sum();
    }
}

上述代碼中的ShoppingCart類不關心具體的產(chǎn)品類型,只要求產(chǎn)品實現(xiàn)Product接口,因此當添加新的產(chǎn)品類型時,購物車的邏輯不需要做任何修改,保持了對修改的封閉性,同時對新的產(chǎn)品類型(擴展)則是開放的。

三、總結

開閉原則是軟件設計的核心思想之一,它鼓勵我們通過擴展來增加新功能,而不是通過修改已有代碼。在實際項目中運用開閉原則,需要我們注重抽象層設計、策略模式和裝飾器模式等設計模式的運用。通過遵循開閉原則,我們可以設計出更加靈活、可擴展的軟件系統(tǒng),從而降低維護成本、提高軟件質(zhì)量。文章來源地址http://www.zghlxwxcb.cn/news/detail-799810.html

到了這里,關于設計模式之開閉原則:如何優(yōu)雅地擴展軟件系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 設計模式——開閉原則

    設計模式——開閉原則

    開閉原則(Open Closed Principle)是編程中最基礎、最重要的設計原則 一個軟件實體如類,模塊和函數(shù)應該對擴展開放(對提供方),對修改關閉(對使用方)。用抽象構建框架,用實現(xiàn)擴展細節(jié)。 當軟件需要變化時,盡量通過擴展軟件實體的行為來實現(xiàn)變化,而不是通過修改已有的

    2024年02月11日
    瀏覽(24)
  • C#設計模式之--六大原則 開閉原則

    設計模式六大原則是單一職責原則、里氏替換原則、依賴倒置原則、接口隔離原則、迪米特法則、開閉原則。它們不是要我們刻板的遵守,而是根據(jù)實際需要靈活運用。只要對它們的遵守程度在一個合理的范圍內(nèi),努為做到一個良好的設計。本文主要介紹一下.NET(C#) 開閉原則

    2024年02月10日
    瀏覽(26)
  • 【23種設計模式】開閉原則

    個人主頁 :金鱗踏雨 個人簡介 :大家好,我是 金鱗 ,一個初出茅廬的Java小白 目前狀況 :22屆普通本科畢業(yè)生,幾經(jīng)波折了,現(xiàn)在任職于一家國內(nèi)大型知名日化公司,從事Java開發(fā)工作 我的博客 :這里是CSDN,是我學習技術,總結知識的地方。希望和各位大佬交流,共同進

    2024年02月08日
    瀏覽(29)
  • 貫穿設計模式第二話--開閉原則

    貫穿設計模式第二話--開閉原則

    ?????? 茫茫人海千千萬萬,感謝這一刻你看到了我的文章,感謝觀賞,大家好呀,我是最愛吃魚罐頭,大家可以叫魚罐頭呦~?????? 從今天開始,將開啟一個專欄, 【貫穿設計模式】 ,設計模式是對軟件設計中普遍存在(反復出現(xiàn))的各種問題,所提出的解決方案,是

    2023年04月11日
    瀏覽(28)
  • 開閉原則正確姿勢, 使用AOP優(yōu)雅的記錄日志, 非常的哇塞

    開閉原則正確姿勢, 使用AOP優(yōu)雅的記錄日志, 非常的哇塞

    ??我親愛的各位大佬們好?????? ?? 本篇文章記錄的為 JDK8 新特性 Stream API 進階 相關內(nèi)容,適合在學Java的小白,幫助新手快速上手,也適合復習中,面試中的大佬??????。 ?? 如果文章有什么需要改進的地方還請大佬不吝賜教?????? ????? 個人主頁 : 阿千弟 ??

    2024年02月06日
    瀏覽(17)
  • 【設計模式】設計原則-里氏替換原則

    定義 任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)。 通俗理解:子類可以擴展父類的功能,但不能改變父類原有的功能。 換句話說,子類繼承父類時,除添加新的方法完成新增功能外,盡量不要重寫父類的方法。 針對的問題 主要作用就是規(guī)范繼承時子類的一些書寫規(guī)則。

    2024年02月14日
    瀏覽(30)
  • 前端設計模式和設計原則之設計原則

    1 開閉原則 該原則指出軟件實體(類、模塊、函數(shù)等)應該 對擴展開放,對修改關閉 。也就是說,在添加新功能時,應該通過擴展現(xiàn)有代碼來實現(xiàn),而不是直接修改已有的代碼。這樣可以確?,F(xiàn)有代碼的穩(wěn)定性,并且減少對其他部分的影響。 在上述例子中,有一個原始功能

    2024年02月07日
    瀏覽(51)
  • 【Java 設計模式】設計原則之開放封閉原則

    在軟件開發(fā)中,設計原則是創(chuàng)建靈活、可維護和可擴展軟件的基礎。 這些原則為我們提供了指導方針,幫助我們構建高質(zhì)量、易理解的代碼。 ?單一職責原則(SRP) ?開放/封閉原則(OCP) ?里氏替換原則(LSP) ?依賴倒置原則(DIP) ?接口隔離原則(ISP) ?合成/聚合復

    2024年02月02日
    瀏覽(61)
  • 【Java 設計模式】設計原則之里氏替換原則

    在軟件開發(fā)中,設計原則是創(chuàng)建靈活、可維護和可擴展軟件的基礎。 這些原則為我們提供了指導方針,幫助我們構建高質(zhì)量、易理解的代碼。 ?單一職責原則(SRP) ?開放/封閉原則(OCP) ?里氏替換原則(LSP) ?依賴倒置原則(DIP) ?接口隔離原則(ISP) ?合成/聚合復

    2024年01月20日
    瀏覽(37)
  • 設計模式——設計模式以及六大原則概述

    設計模式——設計模式以及六大原則概述

    設計模式代表有經(jīng)驗的面向對象軟件開發(fā)人員使用的最佳實踐。 設計模式是軟件開發(fā)人員在軟件開發(fā)過程中面臨的一般問題的解決方案。 這些解決方案是由許多軟件開發(fā)人員在相當長的時間內(nèi)通過試錯獲得的。 在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四

    2024年02月13日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包