zoukankan      html  css  js  c++  java
  • 命令模式

    命令模式把一个请求或者操作封装到一个对象中,把发出命令的责任和执行命令的责任分割开,委派给不同的对象。

     

    命令模式结构:


     

    客户角色:创建一个具体命令对象并确定其接收者

    命令角色:声明了一个给所有具体命令类的抽象接口

    具体命令角色:定义一个接收者和行为之间的弱耦合,实现execute()方法,负责调用接收者的相应操作

    请求者角色:负责调用命令对象执行请求

    接收者角色:负责具体实施和执行一个请求

     

     1public class Client{
     2    public static void main(String[] args){
     3        Receiver receiver = new Receiver();
     4        Command commandOne = new ConcreteCommandOne(receiver);
     5        Command commandTwo = new ConcreteCommandTwo(receiver);
     6        Invoker invoker = new Invoker(commandOne,commandTwo);
     7        invoker.actionOne();
     8        invoker.actionTwo();
     9    }
    10}
    11public class Invoker{
    12    private Command commandOne;
    13    private Command commandTwo;
    14    public Invoker(Command commandOne,Command commandTwo){
    15        this.commandOne = commandOne;
    16        this.commandTwo = commandTwo;
    17    }
    18    public void actionOne(){
    19        commandOne.execute();
    20    }
    21    public void actionTwo(){
    22        commandTwo.execute();
    23    }
    24}
    25public interface Command{
    26    void execute();
    27}
    28public class ConcreteCommandOne implements Command{
    29    private Receiver receiver
    30    public ConcreteCommandOne(Receiver receiver){
    31        this.receiver = receiver;
    32    }
    33    public void execute(){
    34        receiver.actionOne();
    35    }
    36}
    37public class ConcreteCommandTwo implements Command{
    38    private Receiver receiver
    39    public ConcreteCommandTwo(Receiver receiver){
    40        this.receiver = receiver;
    41    }
    42    public void execute(){
    43        receiver.actionTwo();
    44    }
    45}
    46public class Receiver{
    47    public Receiver(){
    48        //
    49    }
    50    public void actionOne(){
    51        System.out.println("ActionOne has been taken.");
    52    }
    53    public void actionTwo(){
    54        System.out.println("ActionTwo has been taken.");
    55    }
    56}

     

  • 相关阅读:
    母函数详解
    java中为什么要实现序列化,什么时候实现序列化?
    cocos2dx&cocosbuilder折腾记
    Unity3D系列教程–使用免费工具在Unity3D中开发2D游戏 第二节(下)
    分頁查詢
    獲取CPU,硬盤序列號
    spcomm
    dbgrideh的導入和導出
    程序窗体及控件自适应分辨率
    組合的藝術
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1935894.html
Copyright © 2011-2022 走看看