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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

命令设计模式的应用

發布時間:2023/12/3 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 命令设计模式的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

嗨,您好!

今天,我將與您分享一種非常出色的編程設計模式。 它有很多用法,是我的最愛之一。 編程設計模式命令具有多種用例。 在這篇文章中,我們將看到如何實現現實世界中的某些東西。

我們將使用電子汽車鑰匙來打開,關閉門,啟用,禁用警報,打開,關閉車庫門或打開和關閉汽車的引擎蓋和行李箱。

我將向您展示的示例是一個非常普通的示例,因此您隨時可以回到這里,并在您的應用程序中使用它。

UML命令模式

如您所知,我總是通過在UML圖上顯示類圖來啟動項目。 這有助于我們以一種精巧,緊湊的方式修復該示例的概述。

解釋細節編程設計

我們的客戶是法拉利車主(FerrariCleint)。 它有一個CarKey。 CarKey具有可通過命令配置的通用MicroShip(Involker)。 命令(OpenDoorCommand)本身具有要執行的動作(DoorAction)。 CarKey可以配置do和undo命令。 NullObjectCommand屬于Null對象設計模式,并且還將在此處使用。 現在讓我們在代碼中查看實現細節。

指揮與微艦

NullObjectCommand在這里用于避免空指針異常,并且只要未定義任何命令就什么都不執行。

public interface Command {void execute(); } public class MicroChip {protected Command[] onCommands;protected Command[] offCommands;public MicroChip(int commandQuantity) {onCommands = new Command[commandQuantity];offCommands = new Command[commandQuantity];Command nullObjecCommand = new NullObjectCommand();for (int i = 0; i < commandQuantity; i++) {onCommands[i]=nullObjecCommand;offCommands[i]=nullObjecCommand;}}public void configureCommand(int position, Command on, Command off){onCommands[position]=on;offCommands[position]=off;}public void executeOnCommand(int position){onCommands[position].execute();}public void executeOffCommand(int position){offCommands[position].execute();}protected class NullObjectCommand implements Command{@Overridepublic void execute() {// NULL-OBJECT-PATTERN}} }

具體的命令和動作

在這里,我們可以看到Actions和Commands的具體實現。

public class Door {public void on(){System.out.println("Opening car doors...");}public void off(){System.out.println("Closing car doors...");} } public class OpenDoorCommand implements Command {private Door door;public OpenDoorCommand(Door door) {this.door = door;}@Overridepublic void execute() {door.on();} } public class CloseDoorCommand implements Command {private Door door;public CloseDoorCommand(Door door) {this.door =door;}@Overridepublic void execute() {door.off();} }

通用微型船

如您在這里看到的,此實現或此MicroShip可以容納所需數量的命令,并且可以在您可能需要的任何情況下重用。 在此MicroShip波紋管中,我只實現了上面的OpenDoorCommand和CloseDoorCommand,因此您可以看到它的強大功能。 像我一樣,您還可以執行其他命令。這很酷的事情是執行和撤消操作的能力。 創建所需數量的命令并執行所需的動作。 這種圖案的簡單和美麗使我著迷。

public class CarKey {private MicroChip microChip;public CarKey() {final int commandQuantity = 5;microChip = new MicroChip(commandQuantity);final Hood hood = new Hood();final OpenHoodCommand openHoodCmd = new OpenHoodCommand(hood);final CloseHoodCommand closeHoodCmd = new CloseHoodCommand(hood);microChip.configureCommand(0, openHoodCmd, closeHoodCmd);final Door door = new Door();final OpenDoorCommand openDoorCmd = new OpenDoorCommand(door);final CloseDoorCommand closeDoorCmd = new CloseDoorCommand(door);microChip.configureCommand(1, openDoorCmd, closeDoorCmd);final Garage garage = new Garage();final OpenGarageCommand openGarageCmd = new OpenGarageCommand(garage);final CloseGarageCommand closeGarageCmd = new CloseGarageCommand(garage);microChip.configureCommand(2, openGarageCmd, closeGarageCmd);final Trunk trunk = new Trunk();final OpenTrunkCommand openTrunkCmd = new OpenTrunkCommand(trunk);final CloseTrunkCommand closeTrunkCmd = new CloseTrunkCommand(trunk);microChip.configureCommand(3, openTrunkCmd, closeTrunkCmd);final Alarm alarm = new Alarm();final EnableAlarmCommand enableAlarmCmd = new EnableAlarmCommand(alarm);final DisableAlarmCommand disableAlarmCmd = new DisableAlarmCommand(alarm);microChip.configureCommand(4, enableAlarmCmd, disableAlarmCmd);}public void openHood(){microChip.executeOnCommand(0);}public void closeHood(){microChip.executeOffCommand(0);}public void openDoor(){microChip.executeOnCommand(1);}public void closeDoor(){microChip.executeOffCommand(1);}public void openGarage(){microChip.executeOnCommand(2);}public void closeGarage(){microChip.executeOffCommand(2);}public void openTrunk(){microChip.executeOnCommand(3);}public void closeTrunk(){microChip.executeOffCommand(3);}public void enableAlarm(){microChip.executeOnCommand(4);}public void disableAlarm(){microChip.executeOffCommand(4);}}

法拉利客戶

最后,我們可以看到這種漂亮的設計模式的用法和功能。 在此示例中,我實現了多個命令來向您展示它的外觀。

public class FerrariClient {public static void main(String[] args) {final CarKey ferrariSwitchbladeKey = new CarKey();ferrariSwitchbladeKey.openHood();ferrariSwitchbladeKey.openGarage();ferrariSwitchbladeKey.openTrunk();ferrariSwitchbladeKey.openDoor();ferrariSwitchbladeKey.enableAlarm();System.out.println("-------------------------------");ferrariSwitchbladeKey.closeHood();ferrariSwitchbladeKey.closeGarage();ferrariSwitchbladeKey.closeTrunk();ferrariSwitchbladeKey.closeDoor();ferrariSwitchbladeKey.disableAlarm();} }

就這樣。 希望你喜歡!

翻譯自: https://www.javacodegeeks.com/2014/08/command-design-pattern-applied.html

總結

以上是生活随笔為你收集整理的命令设计模式的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。