日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

java设计模式之设计原则①开闭原则

發布時間:2023/12/31 asp.net 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java设计模式之设计原则①开闭原则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定義:一個軟件實體如類、模塊和函數應該對擴展開放,對修改關閉。
強調的是用抽象構建框架,用實現擴展細節。
優點:提高軟件系統的可復用性及可維護性

例如:

創建一個Course接口
獲取id方法
獲取name方法
獲取price方法

創建一個JavaCourse類實現Course接口
設置三個屬性
Integer id
String name
Double price
創建一個滿參的構造函數
修改重寫的三個方法的返回值

創建一個Test測試類
創建一個JavaCourse類,賦予屬性
直接輸出這個對象的屬性

可以在idea編輯器中右鍵包選擇

查看類圖關系

比如說現在有一個需求,關于價格有個打8折活動,我們在此基礎上在更改接口的話,所有的實現類中的方法都要重寫這個方法,如果實現類少的話還可以接受,但是我們的接口是不可以經常變化的,應該是穩定可靠的,否則這個作用也就失去了。
解決方案:我們在寫一個JavaDiscountCourse類去繼承JavaCourse類,然后去重寫父類的getPrice()價格方法,如下圖

修改test類 創建的是子類對象(new JavaDiscountCourse)

這樣就可以更好的去擴展并且展示出了打折后的價格

但是呢如果需要展示原價格的話又要怎么去做呢?
在子類中定義一個方法getOriginPrice() 去獲取原價格

但是我們發現在test中他調用不到定義的獲取原價格的方法

雖然定義的是public方法,當時因為我們在test類中使用父類聲明的引用,所以他拿不到public方法
所以我們需要將其類型進行強轉

這樣我們就可以調用定義的獲取原價格的方法了

類圖如下

總結:開閉原則在這里指的是 對于擴展是開放的,而對修改接口和基類是關閉的
我們變化的都是應用層的子模塊,越是底層(基礎)的模塊進行更改,變化(影響)是越大的,越是高層的模塊更改,變化 影響的范圍會越小。
簡單的理解:比如說我們的Dao層變化了,而這個Dao層被很多service使用,而在上層是controller,那這個影響就非常大,有可能我們為了改一個模塊影響到另一個模塊,所以說我們在面向對象編程的時候,一定強調開閉原則,其他原則也都是開閉原則的具體形態,提高了復用性和可維護性,因為我們在公司并不是一個人開發,我們要考慮軟件的維護成本。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的java设计模式之设计原则①开闭原则的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。