广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java行为型模式中命令模式分析
  • 580
分享到

Java行为型模式中命令模式分析

Java行为型模式Java命令模式 2023-02-17 12:02:30 580人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一.介绍二.场景约束三.UML类图四.示意代码五.优点六.在jdk中的应用一.介绍 命令模式(Command Pattern)属于行为型模式。请求以命令的形式包裹在对象中,并传给

一.介绍

命令模式(Command Pattern)属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令,执行顺序是调用者→命令→接收者,实现调用者(Invoker)与接收者(Receiver)解耦

二.场景约束

设计一个文本编辑器(TextField),支持复制、插入以及撤销操作

三.UML类图

四.示意代码

业务代码

//抽象命令
public interface Command {
    void execute();
    void undo();
}
//调用者
class Invoker{
    private Command command;
    public Invoker(Command command) {
        this.command = command;
    }
    public void setCommand(Command command) {
        this.command = command;
    }
    public void call(){
        command.execute();
        command.undo();
    }
}
//具体命令
class insertCommand implements Command {
    private TextField textField;
    private String insertStr = "insertStr";
    public insertCommand(TextField textField) {
        this.textField = textField;
    }
    @Override
    public void execute() {
        textField.text += insertStr;
        System.out.println(textField.text);
    }
    @Override
    public void undo() {
        textField.text = textField.text.substring(0, textField.text.length() - insertStr.length());
        System.out.println(textField.text);
    }
}
//具体命令
class CopyCommand implements Command {
    private TextField textField;
    public CopyCommand(TextField textField) {
        this.textField = textField;
    }
    @Override
    public void execute() {
        textField.text += textField.text;
        System.out.println(textField.text);
    }
    @Override
    public void undo() {
        textField.text = textField.text.substring(0, textField.text.length() / 2);
        System.out.println(textField.text);
    }
}
//接收者
class TextField {
    public String text = "text";
}

客户端

public class Client {
    public static void main(String[] args) {
        Invoker invoker = new Invoker(new CopyCommand(new TextField()));
        invoker.call();
    }
}

五.优点

优点

  • 新增、删除命令非常方便
  • 符合开闭原则
  • 命令可以组合,同时支持命令的撤销和恢复
  • 命令可以增加统一功能:日志、权限
  • 调用者与接收者解耦

六.在JDK中的应用

java.lang.Runnable是一个典型的命令模式,Runnable充当抽象命令的角色,Thread充当调用者的角色,而接收者的角色是开发者自己定义的

//具体命令
class ConcreteCommand implements Runnable{
    private Receiver receiver;
    public ConcreteCommand(Receiver receiver) {
        this.receiver = receiver;
    }
    @Override
    public void run() {
        receiver.execute();
    }
}
//接收者
class Receiver{
    public void execute(){
        System.out.println("执行逻辑");
    }
}

到此这篇关于Java行为型模式中命令模式分析的文章就介绍到这了,更多相关Java命令模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java行为型模式中命令模式分析

本文链接: https://www.lsjlt.com/news/196519.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java行为型模式中命令模式分析
    目录一.介绍二.场景约束三.UML类图四.示意代码五.优点六.在JDK中的应用一.介绍 命令模式(Command Pattern)属于行为型模式。请求以命令的形式包裹在对象中,并传给...
    99+
    2023-02-17
    Java行为型模式 Java命令模式
  • .Net行为型设计模式之命令模式(Command)
    目录一、动机(Motivate)二、意图(Intent)三、结构图(Structure)四、模式的组成五、命令模式的代码实现六、命令模式的实现要点:1、命令模式的优点:2、命令模式的...
    99+
    2022-11-13
  • Java设计模式之行为型模式的示例分析
    这篇文章主要介绍Java设计模式之行为型模式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、行为型模式行为型模式关注点在于"如何运行对象/类";行为型模式用来描述程序在运行时复杂的流程...
    99+
    2023-06-15
  • Java设计模式之命令模式
    本文通过解决老王经常搞错借书人的问题,来引出行为型模式中的命令模式。为了在案例之上理解的更加透彻,我们需要了解命令模式在源码中的应用。最后指出命令模式的应用场景和优缺点。 读者可以拉...
    99+
    2022-11-13
  • Java以命令模式设计模式
    目录Java以命令模式设计模式1、简单介绍2、命令模式Java以命令模式设计模式 1、简单介绍 意图: 将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。 主要解...
    99+
    2022-11-12
  • Java设计模式之初识行为型模式
    目录一、行为型模式二、模板方法模式2.1 例子2.2 模板方法使用场景三、策略模式3.1 例子3.2 使用场景四、状态模式五、中介者模式六、观察者模式6.1 使用场景一、行为型模式 ...
    99+
    2022-11-12
  • PHP中CLI命令行运行模式的示例分析
    这篇文章将为大家详细讲解有关PHP中CLI命令行运行模式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP的CLI命令行运行模式浅析在做开发的时候,我们不仅仅只是做各种网站或者接口,也经常需要...
    99+
    2023-06-15
  • PHP中命令模式的示例分析
    这篇文章主要介绍PHP中命令模式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!命令模式,也称为动作或者事务模式,很多教材会用饭馆来举例。作为顾客的我们是命令的下达者,服务员是这个命令的接收者,菜单是这个实际...
    99+
    2023-06-20
  • JS设计模式之命令模式的示例分析
    这篇文章给大家分享的是有关JS设计模式之命令模式的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。客户创建命令;调用者执行该命令;接收者在命令执行时执行相应操作简单命令对象...
    99+
    2022-10-19
  • JavaScript设计模式之命令模式的示例分析
    小编给大家分享一下JavaScript设计模式之命令模式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!javascript是一种什么语言javascri...
    99+
    2023-06-14
  • MYSQL命令行模式管理的问题分析
    小编给大家分享一下MYSQL命令行模式管理的问题分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySql数据库是中小型网站后...
    99+
    2022-10-18
  • Java 设计模式中的命令模式详情
    目录模式介绍UML类图命令模式案例命令模式的注意事项和细节模式介绍 命令模式(Command Pattern) :在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收...
    99+
    2022-11-13
  • 命令行模式与python交互模式
    命令行模式与python交互模式 1.在命令行模式下,可以执行 python 进入 Python 交互式环境,也可以执 行 python hello.py 运行一个.py 文件。 2.在 Python 交互式环境下,只能输入 Python...
    99+
    2023-01-31
    模式 命令行 python
  • Java设计模式之java命令模式详解
    目录命令模式的介绍角色订单案例命令模式的优点适用场景示例代码应用宏命令----执行一组命令示例代码总结JDK源码解析 Runable是一个典型命令模式,Runnable担当命令的角色...
    99+
    2022-11-12
  • Java设计模式之命令模式详解
    命令模式 定义:将请求封装成对象,这可以让你使用不同的请求、队列、或者日志来参数化其他对象。 何时使用命令模式?当需要将发出请求的对象和执行请求的对象解耦的时候,使用命令模式。 在被...
    99+
    2022-11-12
  • Python中行为型观察者模式的示例分析
    这篇文章主要介绍Python中行为型观察者模式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、观察者模式观察者模式,必须包含 “观察者” 和 “被观察者” 这两个角色,并且观察者和被观察者之间存在 “观察...
    99+
    2023-06-29
  • Python 设计模式中命令模式
    目录1.命令模式2.应用场景3.代码示例1.命令模式 命令模式的目的是解耦调用操作的对象(调用者)和提供实现的对象(接收者)。 命令模式的思路是在调用者和接收者之间插入一个命令类(C...
    99+
    2022-11-13
  • 解释器模式 行为型模式之五
    1.定义         给定一个语言,定义它的文法的一种表示,并定义一个解释器。比如加减乘除在代码里是一种表示,我们需要翻译成可以阅读的数学公式,并且可以供用户输入数字得到输出结果。 2.组成结构 抽象表达式(Abstract Expre...
    99+
    2023-10-10
    c++ 设计模式
  • PHP行为型模式之责任链模式
    目录前言责任链模式的优点责任链模式的实现责任链模式的使用总结前言 责任链模式(Chain of Responsibility Pattern)是什么? 责任链模式是一种行为型模式,它...
    99+
    2023-05-14
    PHP责任链模式 PHP行为型模式
  • Python设计模式中的行为型策略模式
    目录一、策略模式二、应用场景三、代码示例一、策略模式 策略模式中,首先定义了一系列不同的算法,并把它们一一封装起来,然后在策略类中,使这些算法可以相互替换。这意味着,让一个类的行为(...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作