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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

设计模式实战-策略模式(Strategy Pattern)

發(fā)布時間:2025/3/18 asp.net 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式实战-策略模式(Strategy Pattern) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

0 聯(lián)系我

圖片標題 1.Q群【Java開發(fā)技術交流】:jq.qq.com/?_wv=1027&a… 2.完整博客鏈接:www.shishusheng.com 3.知乎:www.zhihu.com/people/shi-… 4.gayhub:github.com/Wasabi1234

0.0 相關源碼鏈接

github.com/Wasabi1234/…

1 定義

也叫做政策模式(Policy Pattern)

  • 維基百科 對象有某個行為,但是在不同的場景中,該行為有不同的實現(xiàn)算法. 比如每個人都要“交個人所得稅”,但是“在美國交個人所得稅”和“在中國交個人所得稅”就有不同的算稅方法.
  • 定義 Define a family of algorithms,encapsulate each one,and make them interchangeable. 定義一組算法,將每個算法都封裝起來,并且使它們之間可以互換.

在運行時(非編譯時)改變軟件的算法行為

  • 主要思想 定義一個通用的問題,使用不同的算法來實現(xiàn),然后將這些算法都封裝在一個統(tǒng)一接口的背后.

策略模式使用的就是面向對象的繼承和多態(tài)機制

策略模式的三個角色 ● Context 封裝角色 也叫做上下文角色,起承上啟下封裝作用; 屏蔽高層模塊對策略、算法的直接訪問,封裝可能存在的變化.

● Strategy抽象策略角色 策略、算法家族的抽象,通常為接口,定義每個策略或算法必須具有的方法和屬性

● ConcreteStrategy具體策略角色 實現(xiàn)抽象策略中的操作,含有具體的算法

通用源碼

  • 抽象策略角色,它是一個非常普通的接口,在我們的項目中就是一個普通得不能再普通的接口了,定義一個或多個具體的算法

2 適用場景

針對一個對象,其行為有些是固定的不變的,有些是容易變化的,針對不同情況有不同的表現(xiàn)形式。那么對于這些容易變化的行為,我們不希望將其實現(xiàn)綁定在對象中,而是希望以動態(tài)的形式,針對不同情況產(chǎn)生不同的應對策略。那么這個時候就要用到策略模式了。簡言之,策略模式就是為了應對對象中復雜多變的行為而產(chǎn)生的。

  • 系統(tǒng)有很多類,而他們的區(qū)別僅僅在于他們的行為不同
  • 一個系統(tǒng)需要動態(tài)地在幾種算法中選擇一種

3 優(yōu)點

  • 符合開閉原則
  • 避免使用多重條件轉移語句 比如省去大量的 if/else 和 switch 語句,降低代碼的耦合
  • 提高算法的保密性和安全性 只需知道策略的作用,而不關心內(nèi)部實現(xiàn)

4 缺點

  • 客戶端必須知道所有的策略類,并自行決定使用哪一個策略類
  • 產(chǎn)生很多策略類

5 相關設計模式的差異

策略模式和工廠模式

  • 行為型 接收已經(jīng)創(chuàng)建好的對象,從而實現(xiàn)不同的行為
  • 創(chuàng)造型 接收指令,創(chuàng)建出符合要求的具體對象

策略模式和狀態(tài)模式

  • 若系統(tǒng)中某個類的某個行為存在多種實現(xiàn)方式,客戶端需要知道到底使用哪個策略
  • 若系統(tǒng)中某個對象存在多種狀態(tài),不同狀態(tài)下的行為又具有差異性,狀態(tài)之間會自動轉換,客戶端不需要關心具體狀態(tài)

6 實戰(zhàn)

改造后的測試類 可見 if/else 語句過多,采取策略+工廠模式結合

  • 策略工廠
  • 最新測試類
  • 輸出結果

7 源碼應用解析

JDK中的比較器接口

  • 策略比較器 比如Arrays類中的 sort 方法通過傳入不同比較接口器的實現(xiàn)達到不同排序策略

JDK中的TreeMap

類似于促銷活動中有促銷策略對象,在T reeMap 中也有比較器對象

compare 方法進步加工

Spring 中的Resource

不同訪問策略

Spring 中bean 的初始化ceInstantiationStrategy

  • 兩種 bean 的初始化策略

轉載于:https://juejin.im/post/5c3ed8c6e51d455221610451

總結

以上是生活随笔為你收集整理的设计模式实战-策略模式(Strategy Pattern)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产一区二区成人 | 欧美一区二区三区国产 | 超碰95在线 | 青青草一区 | 壮汉被书生c到合不拢腿 | 国产第100页| 国产欧美视频在线观看 | 啪啪免费 | av无码精品一区二区三区宅噜噜 | 中文字幕一级 | 欧美日韩精品在线观看视频 | 91亚洲一区二区三区 | 91av视频在线免费观看 | 嫩草影院中文字幕 | 99re这里只有精品在线 | 亚洲欧美日韩国产一区二区 | 永久在线 | 国产精品毛片久久 | 在线免费看mv的网站入口 | 吞精囗交69激情欧美 | 国产精品久久久久久69 | 国产乱码精品一区二区三区亚洲人 | 2021亚洲天堂 | 中文字幕制服丝袜 | 小视频国产 | 天天射日 | 亚洲我射 | 亚洲精品久久久久久久蜜桃 | 欧美超碰在线 | 欧美一级视频在线观看 | 尤物视频在线播放 | 久久综合精品国产二区无码不卡 | 中文字幕精品无码亚 | 国产精品久久久久久久免费看 | 免费在线视频一区二区 | 96av视频| 美女视频久久久 | 亚洲av综合永久无码精品天堂 | 亚洲精品二区三区 | 亚洲午夜精品福利 | 成人免费黄色av | 伊人av影院 | 久久久亚洲欧洲 | 日本免费一区视频 | 天天做天天爱天天爽 | 天天干天天操天天爽 | 97se.com| 亚洲免费观看高清 | 熟妇人妻精品一区二区三区视频 | 久久福利视频导航 | 久久午夜鲁丝片午夜精品 | 免费公开在线视频 | 日韩av手机在线 | 色悠悠视频 | 日韩av不卡在线 | 国产精品久久久久久久久久免费 | 中文字幕+乱码+中文乱码91 | 免费在线观看www | 日本一区二区在线播放 | jizz中国女人高潮 | 18久久| 亚洲一卡二卡三卡 | 伊人影视大全 | 久久男人的天堂 | 手机在线看片1024 | 成人夜视频| 很黄很色的视频 | 无码精品黑人一区二区三区 | 无码人妻少妇伦在线电影 | 蜜桃传媒一区二区亚洲av | 久久久久人妻一区精品色欧美 | 一级片网址 | 免费看欧美黑人毛片 | 国产老妇视频 | av鲁丝一区鲁丝二区鲁丝三区 | 国产中文在线播放 | 国产精品三级 | 中文字幕日产av | 国产日韩av一区二区 | 伊人久艹 | 91成年人网站 | 欧洲女女同videos | 国产亚洲精品久 | 亚洲一区和二区 | 精品小视频在线观看 | 欧美日韩成人一区二区三区 | 一道本在线视频 | 国产精品永久免费 | 超碰午夜 | 九色丨蝌蚪丨成人 | 日本免费一区二区三区视频 | 性猛交xxxx乱大交3 | 成人av免费网站 | 成人午夜在线播放 | 欧美久草视频 | 羞羞漫画在线播放 | 97色在线观看 | 天天爽网站 | 天天插夜夜爽 |