ホームページ Java &#&チュートリアル Javaデザインパターン・コマンドパターンの実践

Javaデザインパターン・コマンドパターンの実践

May 09, 2024 pm 09:15 PM
java デザインパターン

質問: コマンドパターンを適用するにはどうすればよいですか?手順: コマンド インターフェイスを作成して、すべてのコマンドに共通のインターフェイスを定義します。コマンド インターフェイスを実装して、特定のコマンドを作成し、特定のアクションをカプセル化します。コマンドにリクエストを送信するための呼び出し元クラスを作成します。コマンドによって要求されたアクションを実行するレシーバー クラスを作成します。

Javaデザインパターン・コマンドパターンの実践

Java デザイン パターン: コマンド パターンの実践的な応用

概要

コマンド パターンは、リクエストを実行するオブジェクトからリクエストを分離することによって、オブジェクトとクライアントの両方を提供する動作デザイン パターンです。

適用方法

コマンド パターンを実装するには、次のクラスを作成する必要があります:

  • コマンド インターフェイス: すべてのコマンドのパブリック インターフェイスを定義します。
  • 特定のコマンド: コマンドインターフェイスを実装し、特定のアクションを実行します。
  • 呼び出し元: コマンドにリクエストを送信します。
  • 受信者: コマンドによって要求されたアクションを実行します。

実際のケース

以下は、コマンド パターンを使用してリモート コントロールを実装する Java の例です:

// 命令接口
interface Command {
    void execute();
}

// 具体命令:开电视
class TurnOnCommand implements Command {
    private Television television;

    public TurnOnCommand(Television television) {
        this.television = television;
    }

    @Override
    public void execute() {
        television.turnOn();
    }
}

// 具体命令:关电视
class TurnOffCommand implements Command {
    private Television television;

    public TurnOffCommand(Television television) {
        this.television = television;
    }

    @Override
    public void execute() {
        television.turnOff();
    }
}

// 调用者:遥控器
class RemoteControl {
    private List<Command> commands;

    public RemoteControl() {
        commands = new ArrayList<>();
    }

    public void addCommand(Command command) {
        commands.add(command);
    }

    public void pressButton() {
        for (Command command : commands) {
            command.execute();
        }
    }
}

// 接收者:电视
class Television {
    public void turnOn() {
        System.out.println("电视已打开");
    }

    public void turnOff() {
        System.out.println("电视已关闭");
    }
}

// 主方法
public class Main {
    public static void main(String[] args) {
        // 创建电视
        Television television = new Television();

        // 创建命令
        Command turnOnCommand = new TurnOnCommand(television);
        Command turnOffCommand = new TurnOffCommand(television);

        // 创建遥控器并添加命令
        RemoteControl remoteControl = new RemoteControl();
        remoteControl.addCommand(turnOnCommand);
        remoteControl.addCommand(turnOffCommand);

        // 按下遥控器的按钮
        remoteControl.pressButton();
    }
}
ログイン後にコピー

この例では、TurnOnCommandTurnOffCommand 类实现了 Command 接口并封装了打开和关闭电视机的动作。RemoteControl 类扮演调用者的角色,负责向命令发送请求。Television クラスは受信者として機能し、要求されたアクションを受信して​​実行します。

このように、コマンド パターンはアクションを、それを実行するオブジェクトから切り離し、システムの柔軟性、拡張性、保守性を向上させます。

以上がJavaデザインパターン・コマンドパターンの実践の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaの平方根 Javaの平方根 Aug 30, 2024 pm 04:26 PM

Javaの平方根

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Javaの完全数

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

Java の乱数ジェネレーター

Javaのアームストロング数 Javaのアームストロング数 Aug 30, 2024 pm 04:26 PM

Javaのアームストロング数

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

ジャワのウェカ

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

Java Springのインタビューの質問

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8 Stream Foreachから休憩または戻ってきますか?

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Javaのスミス番号

See all articles