【设计模式】软件设计七大原则 ( 开闭原则 )
生活随笔
收集整理的這篇文章主要介紹了
【设计模式】软件设计七大原则 ( 开闭原则 )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、開閉原則簡介
- 二、開閉原則代碼示例
- 1、商品接口
- 2、普通商品類
- 3、折扣商品類
- 4、測試類
一、開閉原則簡介
開閉原則 :
- 定義 : 一個 軟件實體 , 類 / 模塊 / 函數 , 對 擴展 開放 , 對 修改 關閉 ;
- 抽象與實現 : 用 抽象 構建框架 , 用 實現 擴展細節 ;
- 優點 : 提高 軟件系統 的 可復用性 及 可維護性 ;
開閉原則 是 面向對象 設計 中 , 最基礎的 設計原則 , 它指導我們建立穩定靈活的系統 ;
開發新功能時 , 盡量 不修改原有的代碼 , 盡量 使用擴展增加新功能 ;
實現 開閉原則 的核心思想 是面向抽象編程 , 不是面向實現編程 ;
定義的 對象類型 是 抽象類類型 或 接口類型 , 調用的方法 是 抽象類 或 接口 中的方法 ;
抽象是 穩定的 , 讓類依賴于抽象 , 對于修改來說就是封閉的 ;
通過 面向對象 的 繼承 , 以及 多態機制 , 可以實現 對 抽象 的 繼承 , 通過 重寫改變其固有方法 , 或 實現新的擴展方法 ;
二、開閉原則代碼示例
1、商品接口
package openclose;/*** 商品接口*/ public interface IGood {Integer getId();String getName();Double getPrice(); }
2、普通商品類
package openclose;/*** 普通的商品類*/ public class NormalGood implements IGood {private Integer id;private String name;private Double price;public NormalGood(Integer id, String name, Double price) {this.id = id;this.name = name;this.price = price;}@Overridepublic Integer getId() {return this.id;}@Overridepublic String getName() {return this.name;}@Overridepublic Double getPrice() {return this.price;}@Overridepublic String toString() {return "NormalGood{" +"id=" + id +", name='" + name + '\'' +", price=" + price +'}';} }
3、折扣商品類
如果要添加一個商品打折功能 , 不能直接修改 IGood 接口 , 或 NormalGood 類 , 只要修改了 , 就給之前的功能帶來了隱患 ;
根據開閉原則 , 對修改關閉 , 對擴展開放 ;
這里直接定義 NormalGood 類的子類 , 在繼承 NormalGood 類的基礎上 , 開發擴展的新功能 ;
package openclose;/*** 打折商品類* 加入一個 商品 打折的功能* 不能直接修改 IGood 接口 , 或 NormalGood 類* 只要修改了 , 就給之前的功能帶來了隱患* 這里直接定義 NormalGood 類的子類* 在繼承 NormalGood 類的基礎上 , 開發擴展的新功能*/ public class DiscountGood extends NormalGood {public DiscountGood(Integer id, String name, Double price) {super(id, name, price);}@Overridepublic Double getPrice() {return super.getPrice() * 0.5;} }4、測試類
package openclose;public class Main {public static void main(String[] args) {IGood normalGood = new NormalGood(8, "普通商品", 88.0);System.out.println("商品信息 : " + normalGood);IGood discountGood = new DiscountGood(9, "Java 折扣課程", 88.0);System.out.println("折扣商品信息 : " + discountGood + " , 折扣價格 : " + discountGood.getPrice());} }
執行結果 :
商品信息 : NormalGood{id=8, name='普通商品', price=88.0} 折扣商品信息 : NormalGood{id=9, name='Java 折扣課程', price=88.0} , 折扣價格 : 44.0總結
以上是生活随笔為你收集整理的【设计模式】软件设计七大原则 ( 开闭原则 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【BLE MIDI】开发 BLE MID
- 下一篇: 【设计模式】软件设计七大原则 ( 依赖倒