免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

      Java 設(shè)計(jì)模式之策略模式

      定義

      模式定義了一系列算法,并將每個(gè)算法封裝起來(lái),使它們可以互相替換,且算法的變化不會(huì)影響使用算法的用戶。

      策略模式屬于對(duì)象行為模式,它通過(guò)對(duì)算法進(jìn)行封裝,把使用算法的責(zé)任和算法的實(shí)現(xiàn)方式分割開(kāi)來(lái),并委派給不同的對(duì)象對(duì)這些算法進(jìn)行管理。

      通俗理解:

      在現(xiàn)實(shí)生活中經(jīng)常遇到某種目標(biāo)存在多種策略可供選擇的情況。

      例如:出行可以選擇乘坐火車、汽車、私家車、自行車等。

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

      1、多重條件語(yǔ)句不易維護(hù),使用策略模式可以避免使用多重條件語(yǔ)句,如if…else 語(yǔ)句、switch…case語(yǔ)句。

      2、使用恰當(dāng)?shù)睦^承,可以把公共代碼轉(zhuǎn)移到父類里面,避免重復(fù)代碼。

      3、策略模式可以提供相同的行為不同的實(shí)現(xiàn),客戶可以根據(jù)不同時(shí)間或空間要求選擇不同的。

      4、策略模式完美支持開(kāi)閉原則,可以在不修改原代碼的情況下,靈活增加算法。

      5、策略模式實(shí)現(xiàn)了對(duì)算法的使用和實(shí)現(xiàn),二者分離。

      缺點(diǎn):

      1、使用者必須了解所有算法的區(qū)別,以便選擇恰當(dāng)?shù)乃惴悺?/p>

      2、會(huì)造成很多策略類,增加維護(hù)難度。

      策略模式結(jié)構(gòu):

      1、抽象策略類:定義一個(gè)公共接口,各種不同算法以不同的方式實(shí)現(xiàn)這個(gè)接口,環(huán)境角色使用這個(gè)接口調(diào)用不同算法,一般使用接口或者抽象類實(shí)現(xiàn)。

      2、具體策略類:實(shí)現(xiàn)了抽象策略定義的接口,提供具體的算法實(shí)現(xiàn)。

      3、環(huán)境類: 持有一個(gè)策略類的引用,最終給客戶端調(diào)用。

      代碼實(shí)現(xiàn)場(chǎng)景:

      劉備要到江東娶老婆了,走之前諸葛亮給趙云(伴郎)三個(gè)錦囊妙計(jì),說(shuō)是按天機(jī)拆開(kāi)解決棘手問(wèn)題。

      先說(shuō)這個(gè)場(chǎng)景中的要素:三個(gè)妙計(jì),一個(gè)錦囊,一個(gè)趙云,妙計(jì)是小亮同志給的,妙計(jì)是放置在錦囊里,俗稱就是錦囊妙計(jì)嘛,那趙云就是一個(gè)干活的人,從錦囊中取出妙計(jì),執(zhí)行,然后獲勝。

      上代碼:

      /** * 首先定一個(gè)策略接口,這是諸葛亮老人家給趙云的三個(gè)錦囊妙計(jì)的接口 */public interface IStrategy { //每個(gè)錦囊妙計(jì)都是一個(gè)可執(zhí)行的算法 public void operate();}/** * 妙計(jì)有了,需要把妙計(jì)放到錦囊里面 */public class Context { // 構(gòu)造函數(shù),你要使用那個(gè)妙計(jì) private IStrategy iStrategy; public Context(IStrategy iStrategy) { this.iStrategy = iStrategy; } // 開(kāi)始使用錦囊 public void operate() { this.iStrategy.operate(); }}public class BackDoor implements IStrategy { /** * 妙計(jì)一 : 找喬國(guó)老幫忙,使孫權(quán)不能殺劉備 */ @Override public void operate() { System.out.println(“找喬國(guó)老幫忙,讓吳國(guó)太給孫權(quán)施加壓力”); }}/** * 妙計(jì)二:求吳國(guó)太開(kāi)個(gè)綠燈 */public class GivenGreenLight implements IStrategy { @Override public void operate() { System.out.println(“求吳國(guó)太開(kāi)個(gè)綠燈,放行!”); }}/** * 妙計(jì)三:孫夫人斷后,擋住追兵 */public class BlockEnemy implements IStrategy { @Override public void operate() { System.out.println(“孫夫人斷后,擋住追兵”); }}public class ZhaoYun { /** * 趙云出場(chǎng)了,他根據(jù)諸葛亮給他的交代,依次拆開(kāi)妙計(jì) * @param args */ public static void main(String[] args) { Context context; System.out.println(“———–剛剛到吳國(guó)的時(shí)候拆第一個(gè)————-“); context = new Context(new BackDoor()); context.operate(); System.out.println(“”); System.out.println(“———–劉備樂(lè)不思蜀了,拆第二個(gè)了————-“); context = new Context(new GivenGreenLight()); context.operate(); System.out.println(“”); System.out.println(“———–孫權(quán)的小兵追了,咋辦?拆第三個(gè) ————-“); context = new Context(new BlockEnemy()); context.operate(); System.out.println(“”); }}

      注:本文創(chuàng)作思路源于《設(shè)計(jì)模式之禪》

      鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
      用戶投稿
      上一篇 2022年7月16日 18:14
      下一篇 2022年7月16日 18:14

      相關(guān)推薦

      • 英雄聯(lián)盟手游好玩嗎(英雄聯(lián)盟手游好玩還是端游好玩)

        簡(jiǎn)要回答 非常好玩,英雄聯(lián)盟手游這款游戲已經(jīng)正式的進(jìn)行公測(cè),這款游戲是以5v5為模式進(jìn)行對(duì)戰(zhàn)的,它是以英雄聯(lián)盟端游為原型進(jìn)行開(kāi)發(fā),里面的每一種玩法基本都沿襲了端游的特點(diǎn)。 01 這…

        2022年11月25日
      • 百度關(guān)鍵詞快速排名的4大原理解析(百度怎么刷關(guān)鍵詞)

        近期百度公告驚雷算法2.0,升級(jí)之快還是第一次吧,看來(lái)百度對(duì)于刷點(diǎn)擊行為是零容忍了。之前尹華峰SEO技術(shù)博客介紹過(guò)一篇如何使用刷點(diǎn)擊工具,其實(shí)市面上有很多這類SEO快速排名的軟件,…

        2022年11月25日
      • 成都健康碼打不開(kāi)顯示接口請(qǐng)求未知異常怎么辦(成都健康碼打不開(kāi)顯示接口請(qǐng)求未知異常)

        成都這幾天的疫情也是備受關(guān)注,疫情期間各地出行都是需要查看健康碼的,不過(guò)今天卻有成都的小伙伴反饋健康碼無(wú)法打開(kāi)的情況。成都健康碼打不開(kāi)顯示接口請(qǐng)求未知異常怎么辦?由于健康碼無(wú)法打開(kāi)…

        2022年11月24日
      • 1千克等于多少磅

        克,此定義在1958年被美國(guó)以及其他英聯(lián)邦會(huì)員國(guó)承認(rèn)換算回來(lái),一千克等于262磅,一磅等于037千克英國(guó)在1963年開(kāi)始,依據(jù)度量衡法案的規(guī);1 磅=16 盎司=04536 千克 …

        2022年11月24日
      • 神舟戰(zhàn)神S7-DA5NS電腦預(yù)售 到手價(jià)僅需5399元

        神舟戰(zhàn)神S7-DA5NS正在京東商城預(yù)售搶購(gòu),預(yù)售到手價(jià)僅需5399元。其搭載了全新12代i5-12450H處理器,擁有2.0GHz八核十二線程效能,RTX3050 4G GDDR…

        2022年11月23日
      • 抖音怎么帶貨賺傭金(抖音怎么視頻帶鏈接)

        現(xiàn)在直播帶貨很火,而如今無(wú)論是自媒體還是短視頻,大家都可以通過(guò)帶貨來(lái)賺錢(qián),只要你有貨源渠道,就可以通過(guò)帶貨來(lái)賺取傭金。如果你想要做帶貨傭金的話,你可以了解相關(guān)技能,例如,你必須與企…

        2022年11月22日
      • 劉慈欣親自解讀“黑暗森林”;《云頂之弈》全球總決賽XunGe奪冠丨每日B報(bào)

        星彡P(guān)丨文 每日一圖 早期帕底亞學(xué)生捕捉海地鼠的珍貴視頻,請(qǐng)自行搭配BGM《只因你太美》。 劉慈欣解讀“黑暗森林” 《三體》動(dòng)畫(huà)將于12月3日開(kāi)播,官方發(fā)布了一段預(yù)熱視頻,并邀請(qǐng)到…

        2022年11月22日
      • 我的世界指令創(chuàng)造(我的世界指令創(chuàng)造生存)

        只有允許作弊的地圖才可以用指令將世界切換到創(chuàng)造模式具體步驟如下1首先在地圖的選項(xiàng)界面,將地圖允許作弊按鈕打開(kāi)2進(jìn)入該可以作弊的地圖后 ,按下鍵盤(pán)上的~鍵,在彈出的對(duì)話框中,輸入ga…

        2022年11月20日
      • 3階魔方教程 1~7步驟(魔方教程一步一步圖解)

        基礎(chǔ)層先魔方復(fù)原法 by信手拈花 0. 魔方轉(zhuǎn)動(dòng)的公式表示和復(fù)原步驟 0. 1魔方轉(zhuǎn)動(dòng)的公式表示 魔方轉(zhuǎn)動(dòng)的公式表示 0. 2層先法魔方復(fù)原步驟 層先法魔方復(fù)原步驟 讓我開(kāi)始魔方復(fù)…

        2022年11月18日
      • 手淘搜索是自然流量嗎(手淘搜索流量怎么提高)

        作為一個(gè)賣家,我們都應(yīng)該知道,現(xiàn)在店鋪的流量大部分來(lái)自移動(dòng)端,也就是我們說(shuō)的手機(jī)端流量。隨著智能手機(jī)的發(fā)展及網(wǎng)速的提升,手機(jī)購(gòu)物已成為常態(tài)。而淘寶也一直嘗試著從一個(gè)購(gòu)物平臺(tái)往社交平…

        2022年11月18日

      聯(lián)系我們

      聯(lián)系郵箱:admin#wlmqw.com
      工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息