中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

做免費(fèi)網(wǎng)站教程國(guó)vs百度seo排名優(yōu)化軟件化

做免費(fèi)網(wǎng)站教程國(guó)vs,百度seo排名優(yōu)化軟件化,松原網(wǎng)站建設(shè)公司,知乎怎么做自己網(wǎng)站推廣產(chǎn)品1.介紹 策略模式(Strategy Pattern)是一種行為型設(shè)計(jì)模式,它定義了一系列算法,封裝每一個(gè)算法,并使它們可以相互替換。策略模式使得算法的變化獨(dú)立于使用算法的客戶端。 2.主要作用 策略模式的主要作用是將算法或行為…

1.介紹


策略模式(Strategy Pattern)是一種行為型設(shè)計(jì)模式,它定義了一系列算法,封裝每一個(gè)算法,并使它們可以相互替換。策略模式使得算法的變化獨(dú)立于使用算法的客戶端。

2.主要作用


策略模式的主要作用是將算法或行為的選擇從使用者中分離出來(lái),使得可以在運(yùn)行時(shí)選擇不同的算法或行為。這種方式使得代碼更加靈活、可擴(kuò)展。

3.解決的問(wèn)題


策略模式的主要作用是通過(guò)定義一系列算法,使得它們可以相互替換,從而達(dá)到以下幾個(gè)目的:

  • 算法選擇:需要根據(jù)不同的條件選擇不同的算法時(shí),可以使用策略模式避免復(fù)雜的條件語(yǔ)句。
  • 代碼復(fù)用:通過(guò)封裝不同的策略,減少代碼重復(fù),提高可復(fù)用性。
  • 算法獨(dú)立:使得算法的變化獨(dú)立于使用它的客戶端,便于擴(kuò)展和維護(hù)

4.模式原理


包含角色:

  1. 策略接口(Strategy):定義一系列算法的接口,所有具體策略都需要實(shí)現(xiàn)這個(gè)接口。
  2. 具體策略(ConcreteStrategy):實(shí)現(xiàn)策略接口的具體類,每個(gè)具體策略實(shí)現(xiàn)不同的算法。
  3. 上下文(Context):持有一個(gè)策略的引用,提供選擇和使用策略的功能,通常允許在運(yùn)行時(shí)改變所用策略。

UML類圖:
在這里插入圖片描述
代碼示例:

使用策略模式來(lái)實(shí)現(xiàn)不同的排序算法。

// 策略接口
interface SortStrategy {void sort(int[] array);
}// 具體策略:快速排序
class QuickSort implements SortStrategy {public void sort(int[] array) {// 實(shí)現(xiàn)快速排序System.out.println("使用快速排序");}
}// 具體策略:冒泡排序
class BubbleSort implements SortStrategy {public void sort(int[] array) {// 實(shí)現(xiàn)冒泡排序System.out.println("使用冒泡排序");}
}// 上下文
class SortContext {private SortStrategy strategy;public void setStrategy(SortStrategy strategy) {this.strategy = strategy;}public void sort(int[] array) {strategy.sort(array);}
}// 使用
public class StrategyPatternExample {public static void main(String[] args) {SortContext context = new SortContext();int[] array = {5, 2, 9, 1};context.setStrategy(new QuickSort());context.sort(array); // 輸出:使用快速排序context.setStrategy(new BubbleSort());context.sort(array); // 輸出:使用冒泡排序}
}

策略模式結(jié)構(gòu)不算復(fù)雜,更容易理解,在項(xiàng)目中使用的也比較多,再舉個(gè)我在項(xiàng)目中遇到的真實(shí)案例吧:

當(dāng)時(shí)做跑步機(jī)軟件,有個(gè)需求是需要顯示心率值,而心率的來(lái)源有多個(gè),比如:心率手柄,華為運(yùn)動(dòng)健康,還有其他App,他們之間還有優(yōu)先級(jí),華為運(yùn)動(dòng)健康第一,其他App第二,心率手柄第三,當(dāng)三個(gè)心率源都有心率上報(bào)時(shí),需要根據(jù)優(yōu)先級(jí)進(jìn)行顯示心率值,而在獲取心率值的時(shí)候 就只需在 策略模式所說(shuō)的上下文 中get就行了,無(wú)需關(guān)心內(nèi)部實(shí)現(xiàn),至于策略動(dòng)態(tài)切換,以及其他相關(guān)邏輯都包含在了上下文中。

當(dāng)然,上述概念和舉例只是幫助你快速理解策略模式,以及在實(shí)際項(xiàng)目中遇到相應(yīng)需求能想到它就可以了,真實(shí)的需求實(shí)現(xiàn)肯定不會(huì)像示例中那么簡(jiǎn)單,記得靈活運(yùn)用。

5.優(yōu)缺點(diǎn)


優(yōu)點(diǎn)

  • 靈活性:允許在運(yùn)行時(shí)根據(jù)需要切換算法。
  • 可擴(kuò)展性:新的算法可以很方便地加入到系統(tǒng)中,無(wú)需修改原有的代碼。
  • 避免條件語(yǔ)句:策略模式避免了復(fù)雜的條件語(yǔ)句,使代碼更加清晰。

缺點(diǎn)

  • 客戶端必須了解不同的策略:客戶端需要理解不同策略之間的差異,選擇合適的策略。

6.應(yīng)用場(chǎng)景


  • 多種算法選擇:當(dāng)需要根據(jù)不同條件選擇不同算法時(shí),如排序、支付方式等。
  • 需要封裝一系列的算法:例如圖形繪制中,可以根據(jù)不同的圖形類型選擇不同的繪制策略。
  • 需要使用不同策略的對(duì)象:例如,系統(tǒng)中有多個(gè)對(duì)象需要使用不同的策略,但又希望統(tǒng)一管理。

這時(shí)候你是不是突然想拿自己項(xiàng)目中的某些功能練手了😎,各位不要隨便為了設(shè)計(jì)而修改現(xiàn)有完善模塊代碼哈,能就行 🤪,開(kāi)個(gè)玩笑,設(shè)計(jì)模式就是為了方便我們寫(xiě)出更容易維護(hù),更適合自己的代碼的,而不是為了設(shè)計(jì)而設(shè)計(jì)的。

還有還有 說(shuō)到這了再提一嘴😁

硬編碼和條件判斷(if…else 或 switch)

大家在項(xiàng)目中寫(xiě)沒(méi)寫(xiě)過(guò) 通過(guò) if...elseswitch 來(lái)選擇不同的執(zhí)行路徑,使用哪種算法,哪種解析方式,哪種網(wǎng)絡(luò)請(qǐng)求… 這中if...elseswitch選擇方式我們叫做硬編碼,當(dāng)條件足夠多的時(shí)候,看著很不美觀,維護(hù)難度也大,恰恰這種類型的代碼,可以使用策略模式代替哦!

7.總結(jié)


策略模式通過(guò)將算法封裝為獨(dú)立的策略類,提供了一種靈活的方式來(lái)選擇和使用算法。它提高了代碼的可維護(hù)性和擴(kuò)展性,符合面向?qū)ο笤O(shè)計(jì)的基本原則。在需要?jiǎng)討B(tài)選擇算法和減少條件判斷時(shí),策略模式是一種非常有效的解決方案。

http://www.risenshineclean.com/news/907.html

相關(guān)文章:

  • 萊蕪二手房網(wǎng)湖南seo優(yōu)化報(bào)價(jià)
  • wordpress顯示輪播圖深圳市seo上詞多少錢(qián)
  • 網(wǎng)絡(luò)投注網(wǎng)站是怎么建設(shè)簡(jiǎn)述網(wǎng)絡(luò)營(yíng)銷的概念
  • 可以免費(fèi)開(kāi)店的平臺(tái)windows11優(yōu)化大師
  • 網(wǎng)站動(dòng)態(tài)小圖標(biāo)青島網(wǎng)絡(luò)seo公司
  • 日本中古手表網(wǎng)站申請(qǐng)網(wǎng)站怎么申請(qǐng)
  • 襄陽(yáng)做網(wǎng)站哪家好b2b平臺(tái)有哪些
  • 電子商務(wù)網(wǎng)站開(kāi)發(fā)的基本流程軟文營(yíng)銷的特點(diǎn)有哪些
  • 深圳 建設(shè)銀行國(guó)際互聯(lián)網(wǎng)站網(wǎng)絡(luò)推廣公司排名
  • 這幾年做網(wǎng)站怎么樣百度搜索風(fēng)云榜排行榜
  • 東莞網(wǎng)站設(shè)計(jì)報(bào)價(jià)天津百度網(wǎng)站排名優(yōu)化
  • 有哪些網(wǎng)站可以做淘寶客搜索seo怎么優(yōu)化
  • 搭建服務(wù)器做網(wǎng)站公司如何在百度宣傳
  • 9uu域名更新自動(dòng)轉(zhuǎn)跳seo怎么優(yōu)化步驟
  • 湖南省住房和城鄉(xiāng)建設(shè)網(wǎng)站網(wǎng)絡(luò)seo推廣培訓(xùn)
  • 網(wǎng)頁(yè)版的游戲百度推廣優(yōu)化師
  • wordpress聯(lián)系表單插件seo整體優(yōu)化步驟怎么寫(xiě)
  • 鄭州專業(yè)做淘寶網(wǎng)站推廣蘇州疫情最新消息
  • 做招聘網(wǎng)站的客戶想退錢(qián)網(wǎng)站seo快速排名優(yōu)化
  • 做京東網(wǎng)站需要哪些手續(xù)參考網(wǎng)是合法網(wǎng)站嗎?
  • 免費(fèi)發(fā)布推廣信息軟件搜索引擎優(yōu)化工作
  • dedecms網(wǎng)站太原seo快速排名怎么樣
  • 公司做網(wǎng)站價(jià)格足球比賽今日最新推薦
  • 網(wǎng)站建設(shè)地域名螺螄粉的軟文推廣
  • 網(wǎng)站開(kāi)發(fā)4k分辨率西安網(wǎng)絡(luò)科技有限公司
  • 網(wǎng)站建設(shè)工期時(shí)間表站長(zhǎng)統(tǒng)計(jì)免費(fèi)下載
  • 企業(yè)電話認(rèn)證百度seo教程視頻
  • 四川德立勝建設(shè)工程有限公司網(wǎng)站軟文范例大全300字
  • 做同性戀的珠寶網(wǎng)站尋找外貿(mào)客戶的網(wǎng)站
  • 人大網(wǎng)站建設(shè)報(bào)價(jià)單湖北網(wǎng)站seo