一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - 詳解Java設(shè)計(jì)模式編程中命令模式的項(xiàng)目結(jié)構(gòu)實(shí)現(xiàn)

詳解Java設(shè)計(jì)模式編程中命令模式的項(xiàng)目結(jié)構(gòu)實(shí)現(xiàn)

2020-04-20 14:44匆忙擁擠repeat JAVA教程

這篇文章主要介紹了Java設(shè)計(jì)模式編程中命令模式的項(xiàng)目結(jié)構(gòu)實(shí)現(xiàn),命令模式將請(qǐng)求與執(zhí)行分離,可以多個(gè)命令接口的實(shí)現(xiàn)類(lèi),隱藏真實(shí)的被調(diào)用方,需要的朋友可以參考下

正論:

命令模式把一個(gè)請(qǐng)求或者操作封裝到一個(gè)對(duì)象中。命令模式運(yùn)行系統(tǒng)使用不同的請(qǐng)求把客戶端參數(shù)化,對(duì)請(qǐng)求排隊(duì)或者記錄請(qǐng)求日志,可以提供命令的撤銷(xiāo)和恢復(fù)功能。

通俗:

其實(shí)很好理解。命令模式,關(guān)心的就是命令(或者稱為操作)。打個(gè)比方。在一個(gè)公司里面,整個(gè)運(yùn)作就像一個(gè)系統(tǒng)。某個(gè)boss發(fā)布了一個(gè)命令,中層領(lǐng)導(dǎo)接到這個(gè)命令,然后指派給具體負(fù)責(zé)這個(gè)員工。整個(gè)流程很清晰吧。有一個(gè)需求,如何將這個(gè)流程固定下來(lái),形成一個(gè)系統(tǒng)。我們只要抓住了重點(diǎn):命令。將它抽取出來(lái),其他的都迎刃而解了。抽取出命令,封裝成一個(gè)獨(dú)立的對(duì)象,實(shí)現(xiàn)了解耦。至于其他的,可以方便地?cái)U(kuò)展,不論這個(gè)命令是CEO,人事部,還是你爸提出來(lái)的。無(wú)論這個(gè)命令的執(zhí)行者是張三還是王八。這個(gè)模式的產(chǎn)生,其實(shí)是哲學(xué)上的“抓住主要矛盾”。更多的例子,如其他作家舉的“去路邊吃烤肉和去烤肉店吃烤肉有什么不同”或者“美猴王大鬧天宮中玉帝拍太白金星捉來(lái)猴子”。

Java命令模式本質(zhì)是對(duì)命令的封裝,從而把發(fā)出命令的責(zé)任和執(zhí)行命令的責(zé)任分割開(kāi)了,委派給不同的對(duì)象。通俗地說(shuō),我是老總,我只管發(fā)個(gè)命令,至于這個(gè)命令發(fā)給誰(shuí),誰(shuí)執(zhí)行,關(guān)我P事,我發(fā)錢(qián)請(qǐng)人不是為了給自己找麻煩。你是負(fù)責(zé)事情的員工,你的天職是做好上級(jí)交給你的任務(wù),踏踏實(shí)實(shí),不要知道太多,不要八卦,不要問(wèn)太多了。

實(shí)現(xiàn):
我們先來(lái)看一下類(lèi)圖:

詳解Java設(shè)計(jì)模式編程中命令模式的項(xiàng)目結(jié)構(gòu)實(shí)現(xiàn)

根據(jù)這個(gè)我們來(lái)看示例代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public interface ICommand {
  void execute();
}
 
public class ConcreteCommand implements ICommand {
  private Receiver receiver;
 
  public ConcreteCommand(Receiver receiver) {
    this.receiver = receiver;
  }
 
  @Override
  public void execute() {
    this.receiver.action();
  }
 
}
 
public class Receiver {
  public void action() {
    System.out.println("receiver do something");
  }
}
 
public class Invoker {
  private ICommand command;
   
  public Invoker(ICommand command) {
    this.command = command;
  }
   
  public void invoke() {
    this.command.execute();
  }
}
 
public class Test {
  public static void main(String[] args) {
    Receiver receiver = new Receiver();//真正的執(zhí)行者
    ICommand command = new ConcreteCommand(receiver);//用于的隔離的命令
    Invoker invoker = new Invoker(command );//調(diào)用者
    invoker.invoke();
  }
}


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

  • 很容易構(gòu)造一個(gè)命令隊(duì)列
  • 記錄相關(guān)的命令日志
  • 增加命令的狀態(tài),實(shí)現(xiàn)命令的撤銷(xiāo)和重做
  • 允許接受請(qǐng)求的一方?jīng)Q定是否可做
  • 新的命令輕而易舉可以加入其中

缺點(diǎn):
可能會(huì)有過(guò)多的具體命令類(lèi)存在。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产香蕉97碰碰在线视频 | 韩国久久 | www日本在线观看 | 三级伦理在线播放 | 欧美亚洲一区二区三区在线 | 91天堂素人| 男女姓交大视频免费观看 | 日本一区二区视频在线观看 | 国产欧美又粗又猛又爽老 | 美女全身无遮挡 | 无人区大片免费播放器 | 国亚洲欧美日韩精品 | 日韩精品国产自在欧美 | 久久精视频 | 美女在尿口隐私视频 | 免费看h片的网站 | 色婷婷综合久久久中文字幕 | 日本精品久久久久中文字幕 1 | 三体动漫在线观看免费完整版2022 | 男人桶女下面60分钟视频 | 欧美精品久久久久久久免费观看 | 女人c交zzzooo在线观看 | 秋霞鲁丝影院久久人人综合 | 日本免费久久久久久久网站 | 变态女王麻麻小说在线阅读 | 免费成年网站 | 99re8在线精品视频免费播放 | 免费观看小视频 | 国产精品66福利在线观看 | 2021国产麻豆剧传媒剧情 | 毛片在线播放a | 亚洲精品成人A8198A片漫画 | 特黄特黄一级高清免费大片 | 99久久99久久免费精品蜜桃 | 2019韩国最新三级 | 欧美高清在线精品一区二区不卡 | 91国语自产拍在线观看 | 被强迫调教的高辣小说 | 人体欣赏孕妇季玥图片 | 色先锋av资源中文字幕 | 国产精品视频色拍拍 |