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}

     

  • 相关阅读:
    C#使用枚举方法来实现读取用户电脑中安装的软件
    C#实现窗体阴影效果
    [转]SQLserver字符串分割函数
    [转]WinForm实现win7 Aero磨砂效果介绍
    C#通过鼠标点击panel移动来控制无边框窗体移动
    [转]Table交替行变色 鼠标经过变色 单击变色
    《面向对象程序设计》 三 Calculator 计算器初步
    PAT 1001A+B Format
    大一下学期的自我目标
    《面向对象程序设计》第二次作业
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1935894.html
Copyright © 2011-2022 走看看