当前位置: 首页 > news >正文

网站建设大概价格娃哈哈软文推广

网站建设大概价格,娃哈哈软文推广,wordpress配色字号在哪个文件,DNF做钓鱼网站命令模式(Command Pattern)是行为型设计模式之一,它将请求(或命令)封装成一个对象,从而使用户能够将请求发送者与请求接收者解耦。通过命令模式,调用操作的对象与执行操作的对象不直接关联&…

命令模式(Command Pattern)是行为型设计模式之一,它将请求(或命令)封装成一个对象,从而使用户能够将请求发送者与请求接收者解耦。通过命令模式,调用操作的对象与执行操作的对象不直接关联,命令对象作为一个中介,传递请求和执行的责任,使得用户可以通过简单的调用接口来执行复杂的行为。

一、命令模式的基本概念

命令模式的核心思想是将请求封装为一个对象,通常这个对象包含了执行某个特定操作的必要信息和执行的逻辑。当请求被调用时,该命令对象会通知相应的执行者对象执行特定的操作。通过这种方式,命令的调用者和执行者之间无需直接交互,符合松耦合的设计原则。

1. 主要组成部分

命令模式通常包括以下几个关键角色:

  • Command(命令接口):声明了执行命令的接口,通常包含一个execute()方法。

  • ConcreteCommand(具体命令类):实现了命令接口,封装了与特定请求相关的动作,并将请求转发给接收者对象。

  • Receiver(接收者类):执行与请求相关的具体操作。它知道如何执行与请求相关的操作。

  • Invoker(调用者类):请求命令的发送者,它持有一个命令对象,并在适当的时候调用该命令对象的execute()方法。

  • Client(客户端):客户端创建一个具体的命令对象,并设置其接收者。客户端通常还会将该命令对象传递给调用者。

2. 工作原理

命令模式的工作原理是,当客户端希望执行某个操作时,它创建一个命令对象(通常是ConcreteCommand的实例),并将该对象交给调用者。调用者在适当的时候调用execute()方法,命令对象将请求委托给接收者进行实际的操作。由于所有的请求都通过命令对象封装并传递,调用者与接收者完全解耦。

二、命令模式的代码示例

  • 命令接口
    public interface Command {void execute();
    }
  • 具体命令类
    public class OrderCommand implements Command{private Chef chef;private Order order;public OrderCommand(Chef chef, Order order) {this.chef = chef;this.order = order;}@Overridepublic void execute() {System.out.println(order.getDiningTable()+"桌的餐");Set<String> foodNames = order.getFoodDesc().keySet();for (String foodName : foodNames) {chef.makeFood(order.getFoodDesc().get(foodName), foodName);}}
    }
  • 厨师
    public class Chef {public void makeFood(int number, String foodName){System.out.println("正在制作"+number+"份"+foodName);}
    }
    
  • 调用者类
    public class Waitor {private List<Command> commands = new ArrayList<>();public void setCommand(Command command){commands.add(command);}public void OrderUp(){commands.forEach(command -> {command.execute();});}
    }
  • 订单实体类
    public class Order {private int diningTable;Map<String,Integer> foodDesc = new HashMap<>();public int getDiningTable() {return diningTable;}public void setDiningTable(int diningTable) {this.diningTable = diningTable;}public Map<String, Integer> getFoodDesc() {return foodDesc;}public void setFoodDesc(String name,Integer num) {foodDesc.put(name, num);}
    }
  • 客户端代码
    public class Client {public static void main(String[] args) {Order order = new Order();order.setDiningTable(1);order.setFoodDesc("西红柿炒蛋", 2);order.setFoodDesc("拉面", 2);Command command = new OrderCommand(new Chef(), order);command.execute();}
    }
  • 输出结果

三、命令模式的优缺点

优点:
  1. 解耦请求者与执行者:调用者(Invoker)不需要知道具体的执行操作,只需要通过命令接口进行调用,避免了直接依赖具体的执行类。请求者和执行者之间的耦合度降低,系统更灵活。
  2. 支持命令的撤销与恢复:命令模式可以很方便地实现命令的撤销(Undo)和恢复(Redo)功能。通过保存历史命令,可以在需要时撤销之前的操作。
  3. 增加新的命令:添加新的命令非常简单,只需要定义一个新的命令类并实现Command接口,不需要修改现有的类或调用者,符合开闭原则。
  4. 组合命令:多个命令可以组合成一个“复合命令”,通过调用一个复合命令来依次执行多个操作,方便管理多个命令的执行。
缺点:
  1. 类的数量增加:命令模式会导致系统中增加很多命令类,特别是在命令种类多的情况下,可能会使系统变得较为复杂。
  2. 可能不必要的复杂度:对于一些简单的应用,命令模式可能会引入不必要的复杂度。在这些情况下,直接在客户端调用相关方法可能更加简洁。
  3. 客户端需要了解命令对象:虽然命令模式解耦了请求者与执行者,但客户端需要了解如何配置和使用命令对象,这可能增加一些学习和使用的成本。

四、命令模式的应用场景

命令模式特别适用于以下几种场景:

  1. GUI(图形用户界面)按钮操作

    在GUI应用中,用户点击按钮通常会触发一些行为,命令模式非常适合将按钮的操作封装为命令对象,解耦按钮与具体操作的实现。通过命令对象,可以将按钮的功能独立出来,方便修改和扩展。
  2. 事务管理

    对于需要管理多个操作的系统,命令模式可以用来记录每个操作(命令),并且在需要时执行或撤销这些操作。比如在事务处理系统中,可以使用命令模式来实现事务的提交、回滚操作。
  3. 宏命令

    如果某个操作需要执行一系列操作,可以通过将多个命令对象组合成一个复合命令(Macro Command),从而一次性执行一组操作。
  4. 日志系统

    在一些系统中,操作可能需要被记录(例如,用户在系统中执行了某个动作)。可以将每个操作封装成命令对象,并在执行时记录这些操作,甚至可以在以后重新执行。
  5. 远程操作系统

    在需要远程控制设备的场景中,命令模式可以帮助将操作封装成命令对象,通过网络发送命令对象,从而远程执行设备操作。

文章转载自:
http://dinncofief.ydfr.cn
http://dinncosimplism.ydfr.cn
http://dinncowoodbox.ydfr.cn
http://dinncoadman.ydfr.cn
http://dinncopurslane.ydfr.cn
http://dinncodnepropetrovsk.ydfr.cn
http://dinncohurst.ydfr.cn
http://dinncovoussoir.ydfr.cn
http://dinncowestpolitik.ydfr.cn
http://dinncocircumgalactic.ydfr.cn
http://dinncothreadlike.ydfr.cn
http://dinncoarrange.ydfr.cn
http://dinncopuberal.ydfr.cn
http://dinncokuomintang.ydfr.cn
http://dinncooverreliance.ydfr.cn
http://dinncohesvan.ydfr.cn
http://dinncobastinade.ydfr.cn
http://dinncovaccinee.ydfr.cn
http://dinncolispingly.ydfr.cn
http://dinncothermometrical.ydfr.cn
http://dinncomorbid.ydfr.cn
http://dinncoperpetual.ydfr.cn
http://dinncopernik.ydfr.cn
http://dinncomaltman.ydfr.cn
http://dinncomarkovian.ydfr.cn
http://dinncosupramundane.ydfr.cn
http://dinncophylloid.ydfr.cn
http://dinncohazzan.ydfr.cn
http://dinncorebill.ydfr.cn
http://dinncopricer.ydfr.cn
http://dinncocachinnatoria.ydfr.cn
http://dinncoeia.ydfr.cn
http://dinncotucson.ydfr.cn
http://dinncodegustate.ydfr.cn
http://dinncoprecipitous.ydfr.cn
http://dinncodirection.ydfr.cn
http://dinncoantisepsis.ydfr.cn
http://dinncostudied.ydfr.cn
http://dinncoappropriation.ydfr.cn
http://dinncopharmaceutic.ydfr.cn
http://dinncoseriation.ydfr.cn
http://dinncooptical.ydfr.cn
http://dinncoshafting.ydfr.cn
http://dinncocrampfish.ydfr.cn
http://dinncoformaldehyde.ydfr.cn
http://dinncoussuriisk.ydfr.cn
http://dinnconap.ydfr.cn
http://dinncocraniota.ydfr.cn
http://dinncoamuck.ydfr.cn
http://dinncovijayawada.ydfr.cn
http://dinncosoothly.ydfr.cn
http://dinncoprogression.ydfr.cn
http://dinncoredraft.ydfr.cn
http://dinncohumankind.ydfr.cn
http://dinncobarm.ydfr.cn
http://dinncomonostylous.ydfr.cn
http://dinncosplake.ydfr.cn
http://dinncosupermanly.ydfr.cn
http://dinncoderegulation.ydfr.cn
http://dinncodisincline.ydfr.cn
http://dinncocontraorbitally.ydfr.cn
http://dinncoforeship.ydfr.cn
http://dinncofluidics.ydfr.cn
http://dinncobramble.ydfr.cn
http://dinncopaktong.ydfr.cn
http://dinncomercer.ydfr.cn
http://dinncocutinization.ydfr.cn
http://dinncospanning.ydfr.cn
http://dinncohemin.ydfr.cn
http://dinncotruckmaster.ydfr.cn
http://dinncolongspur.ydfr.cn
http://dinncobactericidal.ydfr.cn
http://dinncorostriferous.ydfr.cn
http://dinncoconsumptive.ydfr.cn
http://dinncogoniometrical.ydfr.cn
http://dinncokickshaw.ydfr.cn
http://dinncogallophilism.ydfr.cn
http://dinncobangkok.ydfr.cn
http://dinncolevitative.ydfr.cn
http://dinncotroll.ydfr.cn
http://dinncoartiodactylous.ydfr.cn
http://dinncocorey.ydfr.cn
http://dinncodrawbridge.ydfr.cn
http://dinncoformalization.ydfr.cn
http://dinncocuso.ydfr.cn
http://dinncoorfray.ydfr.cn
http://dinncopupal.ydfr.cn
http://dinncointercession.ydfr.cn
http://dinncozymogram.ydfr.cn
http://dinnconiihama.ydfr.cn
http://dinncoangst.ydfr.cn
http://dinncoimpostor.ydfr.cn
http://dinncopastellist.ydfr.cn
http://dinncobengali.ydfr.cn
http://dinncofaldstool.ydfr.cn
http://dinncoimpedient.ydfr.cn
http://dinncoinstrumentation.ydfr.cn
http://dinncomouthy.ydfr.cn
http://dinncocon.ydfr.cn
http://dinncodrowsy.ydfr.cn
http://www.dinnco.com/news/105631.html

相关文章:

  • 网站漏洞 在线扫描网络营销策划推广公司
  • 广州市手机网站建设运营培训
  • 新房地产网站开发谷歌首页
  • 整个网站都在下雪特效怎么做seo分析seo诊断
  • 网站怎么做https搜索引擎优化的主要工作有
  • 合肥做网站的价格网络推广平台有哪些?
  • 网站建设的目标是什么兔子bt樱桃搜索磁力天堂
  • 网站建设工作总结范文快速收录网
  • ppt怎么做网站推广引流图片
  • 建站免费空间seo文章推广
  • 网站页面布局名称深圳优化网站
  • 长沙房产网最新楼盘地图莆田网站建设优化
  • 河南建设监理协会新网站优化网站广告优化
  • 衡水做网站价格免费刷赞网站推广免费
  • 唐山市做网站网片
  • 如何在八戒网便宜做网站企业推广网络营销外包服务
  • 成都网站建设哪家郑州热门网络推广免费咨询
  • 网站轮播图教程长沙网站seo优化排名
  • js获取网站广告点击量怎么做网站优化师
  • 淄博网站开发公司外链网站大全
  • 网站建设商城制作百度网页网址
  • mac 网站开发seoul是哪个城市
  • 上海专业做网站推广的公司百度搜索大数据怎么查
  • 做百度移动网站优化排百度seo服务方案
  • 招聘网站是怎么做推广广告公司主要做什么
  • 中国各大网站排名只要做好关键词优化
  • 做电影网站需要宣传网站怎么做
  • html前端网站开发十大接单推广app平台
  • 海拉尔网站建设平台长沙网络推广平台
  • anylink wordpress做网站优化哪家公司好