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

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

去國外怎么導(dǎo)航地圖搜索引擎關(guān)鍵詞怎么優(yōu)化

去國外怎么導(dǎo)航地圖,搜索引擎關(guān)鍵詞怎么優(yōu)化,河北工程信息網(wǎng),wordpress簡(jiǎn)體中文目錄 什么是命令模式 命令模式的實(shí)現(xiàn) 命令模式角色 命令模式類圖 命令模式舉例 命令模式代碼實(shí)現(xiàn) 命令模式的特點(diǎn) 優(yōu)點(diǎn) 缺點(diǎn) 使用場(chǎng)景 注意事項(xiàng) 什么是命令模式 命令模式(Command Pattern)是一種數(shù)據(jù)驅(qū)動(dòng)的設(shè)計(jì)模式,它屬…

目錄

什么是命令模式? ? ?

命令模式的實(shí)現(xiàn)

命令模式角色

命令模式類圖

命令模式舉例

命令模式代碼實(shí)現(xiàn)

命令模式的特點(diǎn)

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

缺點(diǎn)

使用場(chǎng)景

注意事項(xiàng)


什么是命令模式? ? ?

????????命令模式(Command Pattern)是一種數(shù)據(jù)驅(qū)動(dòng)的設(shè)計(jì)模式,它屬于行為型模式。是對(duì)命令的封裝,每一個(gè)命令都是一個(gè)操作,請(qǐng)求以命令的形式包裹在對(duì)象中,并傳給調(diào)用對(duì)象。調(diào)用對(duì)象尋找可以處理該命令的合適的對(duì)象,并把該命令傳給相應(yīng)的對(duì)象,該對(duì)象執(zhí)行命令。

????????在軟件系統(tǒng)中,方法的請(qǐng)求者與方法的實(shí)現(xiàn)者總是存在著緊密的耦合關(guān)系,這不利于擴(kuò)展和維護(hù)。如何將“行為請(qǐng)求者”與“行為實(shí)現(xiàn)者”解耦?將一組行為抽象為對(duì)象,實(shí)現(xiàn)二者之間的松耦合,變得很重要,命令模式能很好地解決這個(gè)問題。

命令模式的實(shí)現(xiàn)

????????命令模式將請(qǐng)求以命令的形式包裹在對(duì)象里面,傳遞給調(diào)用對(duì)象,調(diào)用對(duì)象尋找匹配該命令的對(duì)象,將命令給該對(duì)象執(zhí)行。其調(diào)用過程主要分為了三步:

  1. 命令被包裹在請(qǐng)求對(duì)象里,傳遞給調(diào)用對(duì)象。
  2. 調(diào)用對(duì)象查找匹配該命令(可以處理該命令)的對(duì)象,將該命令傳遞給匹配的對(duì)象。
  3. 該對(duì)象執(zhí)行傳遞給它的命令。

命令模式角色

接收者角色(Receiver):該類負(fù)責(zé)具體實(shí)施或執(zhí)行一個(gè)請(qǐng)求,真正執(zhí)行命令的對(duì)象。任何類都可能成為一個(gè)接收者,只要它能夠?qū)崿F(xiàn)命令要求實(shí)現(xiàn)的相應(yīng)功能。
命令角色(Command):定義需要執(zhí)行的所有命令行為,需要執(zhí)行的命令都在這里聲明。
具體命令角色(ConcreteCommand):命令接口實(shí)現(xiàn)對(duì)象,是“虛”的實(shí)現(xiàn);該類內(nèi)部通常會(huì)持有接收者,并調(diào)用接收者的功能來完成命令要執(zhí)行的操作。
請(qǐng)求者角色(Invoker):接收客戶端的命令,并執(zhí)行命令,要求命令對(duì)象執(zhí)行請(qǐng)求,可以持有很多的命令對(duì)象。是客戶端真正觸發(fā)命令并要求命令執(zhí)行相應(yīng)操作的地方,相當(dāng)于使用命令對(duì)象的入口。

命令模式類圖

命令模式舉例

????????小女孩茱麗(Julia)有一個(gè)盒式錄音機(jī),此錄音機(jī)有播音(Play)、倒帶(Rewind)和停止(Stop)功能,錄音機(jī)的鍵盤便是請(qǐng)求者(Invoker)角色;茱麗(Julia)是客戶端角色,而錄音機(jī)便是接收者角色。Command類扮演抽象命令角色,而PlayCommand、StopCommand和RewindCommand便是具體命令類。茱麗(Julia)不需要知道播音(play)、倒帶(rewind)和停止(stop)功能是怎么具體執(zhí)行的,這些命令執(zhí)行的細(xì)節(jié)全都由鍵盤(Keypad)具體實(shí)施。茱麗(Julia)只需要在鍵盤上按下相應(yīng)的鍵便可以了。

命令模式代碼實(shí)現(xiàn)

接收者角色

package com.common.demo.pattern.command;/*** @author Evan Walker 昂焱數(shù)據(jù): https://www.ayshuju.com* @version 1.0* @desc 接收者角色類* @date 2023/08/01 21:04:50*/
public class AudioPlayer {public void play(){System.out.println("播放...");}public void rewind(){System.out.println("倒帶...");}public void stop(){System.out.println("停止...");}
}

命令角色

package com.common.demo.pattern.command;/*** @author Evan Walker 昂焱數(shù)據(jù): https://www.ayshuju.com* @version 1.0* @desc 抽象命令角色類* @date 2023/08/01 21:04:34*/
public interface Command {/*** 執(zhí)行方法*/void execute();
}

具體命令角色

package com.common.demo.pattern.command;/*** @author Evan Walker 昂焱數(shù)據(jù): https://www.ayshuju.com* @version 1.0* @desc 具體調(diào)用者角色* @date 2023/08/01 21:07:43*/
public class ConcreteCommand implements Command {private Receiver receiver = null;/*** 構(gòu)造方法*/public ConcreteCommand(Receiver receiver) {this.receiver = receiver;}@Overridepublic void execute() {//通常會(huì)轉(zhuǎn)調(diào)接收者對(duì)象的相應(yīng)方法,讓接收者來真正執(zhí)行功能receiver.action();}
}
package com.common.demo.pattern.command;/*** @author Evan Walker 昂焱數(shù)據(jù): https://www.ayshuju.com* @version 1.0* @desc 具體調(diào)用者角色 倒帶* @date 2023/08/01 21:07:43*/
public class RewindCommand implements Command {private AudioPlayer audioPlayer= null;/*** 構(gòu)造方法*/public RewindCommand(AudioPlayer audioPlayer) {this.audioPlayer = audioPlayer;}@Overridepublic void execute() {//通常會(huì)轉(zhuǎn)調(diào)接收者對(duì)象的相應(yīng)方法,讓接收者來真正執(zhí)行功能audioPlayer.rewind();}
}
package com.common.demo.pattern.command;/*** @author Evan Walker 昂焱數(shù)據(jù): https://www.ayshuju.com* @version 1.0* @desc 具體調(diào)用者角色 暫停* @date 2023/08/01 21:07:43*/
public class StopCommand implements Command {private AudioPlayer audioPlayer= null;/*** 構(gòu)造方法*/public StopCommand(AudioPlayer audioPlayer) {this.audioPlayer = audioPlayer;}@Overridepublic void execute() {//通常會(huì)轉(zhuǎn)調(diào)接收者對(duì)象的相應(yīng)方法,讓接收者來真正執(zhí)行功能audioPlayer.stop();}
}

請(qǐng)求者角色

package com.common.demo.pattern.command;/*** @author Evan Walker  昂焱數(shù)據(jù): https://www.ayshuju.com* @version 1.0* @desc 請(qǐng)求者角色 按鍵* @date 2023/08/01 21:09:32*/
public class Keypad {private Command playCommand;private Command rewindCommand;private Command stopCommand;public void setPlayCommand(Command playCommand) {this.playCommand = playCommand;}public void setRewindCommand(Command rewindCommand) {this.rewindCommand = rewindCommand;}public void setStopCommand(Command stopCommand) {this.stopCommand = stopCommand;}/*** 執(zhí)行播放方法*/public void play(){playCommand.execute();}/*** 執(zhí)行倒帶方法*/public void rewind(){rewindCommand.execute();}/*** 執(zhí)行播放方法*/public void stop(){stopCommand.execute();}
}

測(cè)試代碼

package com.common.demo.pattern.command;/*** @author Evan Walker  昂焱數(shù)據(jù): https://www.ayshuju.com* @version 1.0* @desc 客戶端測(cè)試類 客戶judia* @date 2023/08/01 21:10:30*/
public class ClientTest {public static void main(String[] args) {//創(chuàng)建接收者對(duì)象AudioPlayer audioPlayer = new AudioPlayer();//創(chuàng)建命令對(duì)象Command playCommand = new PlayCommand(audioPlayer);Command rewindCommand = new RewindCommand(audioPlayer);Command stopCommand = new StopCommand(audioPlayer);//創(chuàng)建請(qǐng)求者對(duì)象Keypad keypad = new Keypad();keypad.setPlayCommand(playCommand);keypad.setRewindCommand(rewindCommand);keypad.setStopCommand(stopCommand);//測(cè)試keypad.play();keypad.rewind();keypad.stop();keypad.play();keypad.stop();}
}

測(cè)試截圖

命令模式的特點(diǎn)

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

  1. 解耦性:解耦請(qǐng)求發(fā)送者和接收者,命令模式將請(qǐng)求封裝成獨(dú)立的命令對(duì)象,使得發(fā)送者和接收者之間解耦,從而降低了兩者之間的直接依賴關(guān)系。
  2. 易擴(kuò)展性:容易擴(kuò)展新的命令,由于命令被封裝成獨(dú)立的對(duì)象,可以很容易地?cái)U(kuò)展新的命令類,而無需修改現(xiàn)有的代碼。
  3. 動(dòng)態(tài)組合性:命令模式把請(qǐng)求封裝起來,可以動(dòng)態(tài)地對(duì)它進(jìn)行參數(shù)化、隊(duì)列化和日志化等操作,從而使得系統(tǒng)更靈活。命令模式中的命令對(duì)象能夠很容易地組合成復(fù)合命令,也就是宏命令,從而使系統(tǒng)操作更簡(jiǎn)單,功能更強(qiáng)大。

缺點(diǎn)

  1. 類膨脹:每個(gè)具體命令都需要一個(gè)獨(dú)立的類,如果命令過多,可能導(dǎo)致類的數(shù)量劇增,增加了系統(tǒng)復(fù)雜性。
  2. 實(shí)現(xiàn)復(fù)雜:命令模式的實(shí)現(xiàn)可能比較復(fù)雜,涉及到許多額外的類和關(guān)聯(lián)關(guān)系。
  3. 可能造成性能瓶頸:若系統(tǒng)中存在大量的命令對(duì)象,執(zhí)行這些命令可能會(huì)對(duì)系統(tǒng)的性能造成影響。其命令是通過一個(gè)個(gè)對(duì)象來完成的,在執(zhí)行命令時(shí)可能需要執(zhí)行大量的對(duì)象,這可能會(huì)帶來一定的時(shí)間開銷。

使用場(chǎng)景

  1. 需要將請(qǐng)求發(fā)送者和接收者解耦的情況。
  2. 需要支持撤銷和重做操作的場(chǎng)景。
  3. 需要將一系列操作封裝成一個(gè)命令進(jìn)行批處理的情況。
  4. 需要支持日志和事務(wù)等功能的情況。

注意事項(xiàng)

  1. 命令對(duì)象要盡量保持簡(jiǎn)單,只包含必要的信息,以減輕命令的負(fù)擔(dān)和復(fù)雜度。
  2. 注意命令模式中對(duì)象間的引用關(guān)系。命令對(duì)象通常需要持有對(duì)接收者的引用,可以通過構(gòu)造函數(shù)或?qū)傩宰⑷敕绞綄?shí)現(xiàn)。
  3. 考慮使用撤銷和重做操作時(shí),需要合理地管理命令的歷史記錄,以便正確地執(zhí)行撤銷和重做操作。
  4. 注意命令模式的適用場(chǎng)景,避免過度設(shè)計(jì)和濫用命令模式帶來的額外復(fù)雜性。

更多消息資訊,請(qǐng)?jiān)L問昂焱數(shù)據(jù)(https://www.ayshuju.com)

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

相關(guān)文章:

  • 網(wǎng)站建設(shè) 無錫登錄注冊(cè)入口
  • 網(wǎng)站專題頁ps教程關(guān)鍵詞點(diǎn)擊排名系統(tǒng)
  • wordpress 注冊(cè) 插件信息流優(yōu)化師是干什么的
  • flash做的網(wǎng)站優(yōu)化網(wǎng)站推廣
  • 網(wǎng)站ftp用戶名和密碼做推廣哪個(gè)平臺(tái)好
  • 廣州建筑股份有限公司官網(wǎng)seo課程培訓(xùn)學(xué)校
  • 湛江有沒有做網(wǎng)站的關(guān)鍵詞seo培訓(xùn)
  • 純css網(wǎng)站騰訊體育nba
  • 電子商務(wù)網(wǎng)站建設(shè)招標(biāo)書網(wǎng)絡(luò)營銷常見的工具
  • 學(xué)做網(wǎng)站初入門教程太原seo代理商
  • 中交路橋建設(shè)網(wǎng)站百度seo工作室
  • 裝飾畫嘉興seo外包公司費(fèi)用
  • 吉林網(wǎng)站備案英文seo實(shí)戰(zhàn)派
  • 修改網(wǎng)站圖標(biāo)seo有名氣的優(yōu)化公司
  • 河南省建設(shè)教育協(xié)會(huì)網(wǎng)站口碑營銷的方法
  • 長(zhǎng)安網(wǎng)站建設(shè)費(fèi)用查詢網(wǎng)站流量
  • 重慶梁平網(wǎng)站建設(shè)哪家便宜優(yōu)化網(wǎng)站標(biāo)題是什么意思
  • 做qq游戲的視頻秀網(wǎng)站楓樹seo
  • 網(wǎng)站登錄注冊(cè)頁面模板下載百度搜索引擎收錄
  • 小型網(wǎng)站開發(fā)用什么語言營銷案例網(wǎng)站
  • 企業(yè)門戶網(wǎng)站建設(shè)渠道服裝市場(chǎng)調(diào)研報(bào)告范文
  • 鄭州網(wǎng)站建設(shè)公司價(jià)格經(jīng)濟(jì)新聞最新消息財(cái)經(jīng)
  • 邢臺(tái)做網(wǎng)站口碑好怎么弄推廣廣告
  • 百度收錄網(wǎng)站要多網(wǎng)站策劃書模板
  • 東莞企業(yè)黃頁百度關(guān)鍵詞優(yōu)化送網(wǎng)站
  • 編程線下培訓(xùn)機(jī)構(gòu)廣安seo外包
  • 泗洪網(wǎng)站建設(shè)蘭蔻搜索引擎營銷案例
  • 做網(wǎng)站要做哪些站長(zhǎng)工具高清無嗎
  • 網(wǎng)站優(yōu)化標(biāo)題怎么做自媒體平臺(tái)注冊(cè)入口官網(wǎng)
  • 怎么做動(dòng)態(tài)網(wǎng)站系統(tǒng)哪里有永久免費(fèi)建站