问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

设计模式中命令模式和迭代器模式的区别、对比

发布网友 发布时间:2022-04-22 13:56

我来回答

1个回答

热心网友 时间:2022-04-19 02:09

这两个设计模式区别应该很大呀..
为什么会分不清呢.
先看基本定义:

命令模式
在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern)
迭代器模式
提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示

一个最基本的区别.
迭代器类似你已经有了一个函数数组,
然后你按照顺序从0到正无穷的这么去遍历.

而命令
请求的一方发出请求,要求执行一个操作;接收的一方收到请求,并执行操作。

这么来说吧.命令虽然可以进行一组命令组合,然后实现一堆的事情但他毕竟是某一个具体请求的响应根据协议去组合.
而迭代是我这一组就是一组.一个一个网下执行..

说道这里我似乎明白了您为什么分不清了.
是否是迭代也是一组函数.命令也可以是一组函数呢?

那反过来想.你调用一个接口这接口就给你返回一个Helloword
没有任何操作.
他看似可以是一个迭代器亦可以是一个命令.
但问题是.迭代器是不包含返回这个过程的哦.
他描述的仅仅是执行的过程.
也就是说.
如果说带上了返回二字他可以被称作命令而非迭代了.

迭代一般来说指的是内部的调用逻辑.
而命令则包含了整体的调用逻辑.

从参与者就能看出对应的细节
迭代器:
Iterator(迭代器)
迭代器定义访问和遍历元素的接口

ConcreteIterator (具体迭代器)
具体迭代器实现迭代器接口
对该聚合遍历时跟踪当前位置
Aggregate (聚合)
聚合定义创建相应迭代器对象的接口
ConcreteAggregate (具体聚合)
具体聚合实现创建相应迭代器的接口,该操作返回ConcreteIterator的一个适当的实例

命令:

Command:
定义命令的接口,声明执行的方法。
ConcreteCommand:
命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。
Receiver:
接收者,真正执行命令的对象。任何类都可能成为一个接收者,只要它能够实现命令要求实现的相应功能。
Invoker:
要求命令对象执行请求,通常会持有命令对象,可以持有很多的命令对象。这个是客户端真正触发命令并要求命令执行相应操作的地方,也就是说相当于使用命令对象的入口。
Client:
创建具体的命令对象,并且设置命令对象的接收者。注意这个不是我们常规意义上的客户端,而是在组装命令对象和接收者,或许,把这个Client称为装配者会更好理解,因为真正使用命令的客户端是从Invoker来触发执行。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
虹口区东余杭路541弄算几号地块?12年下半年号称要拆,附近都在拆类,明... 我想知道新建路东余杭路这二年有没有拆迁规划? 手机通话变声器哪种好 变声器哪个好用 我准备7月底开始复习考研,还来得及吗 大四下学期考研还来得及吗 考研还来得及吗 ...在脊椎骨右边靠脊椎骨附近疼,是什么原因,大概有半个多月了,弯腰时... 电脑开着总是无缘无故蓝屏提示 电脑开着总是无缘无故蓝屏 电脑无缘无故蓝屏怎么回事探究电脑突然蓝屏的原因 LightGBM 如何确定最佳迭代次数? 基于误差准则和循环迭代的匹配滤波算法 软件测试中,版本和迭代有什么区别? 跪求高手指点 用“我是……”造句 Jacobi迭代法和Gauss-Seidel迭代法有什么区别 重赏!!!求matlab习题答案!!! 到底什么是迭代算法?与递推有什么区别? 迭代计算的终止条件可以是前后两次计算结果的差别小于某个值吗? 调用递归函数的开销和迭代的的差距有多大 迭代模型和增量模型有什么异同 迭代法和递推法有什么区别? gauss-seidel迭代法和tdma迭代法的区别 迭代算法和递归算法的异同? 迭代次数讨论 为什么微信团队删不掉 梦见自己生了个男孩、可是家人都不理我、一会就长大了 梦见自己去生孩子,可是身边却没有一个亲人陪伴 做梦梦到生孩子了 梦见自己生孩子 然后孩子不见了 做梦自己生孩子了是怎么回事 相关拟合曲线为什么不一次次迭代下去 C++ 的容器通过迭代器访问和通过下标访问有效率差别吗 为什么电脑待机后屏幕不亮 为什么我电脑自动休眠后,再用屏幕不亮 电脑睡眠后唤醒时屏幕不亮 电脑睡眠屏幕关闭之后主机可正常唤醒,但显示器不亮 为什么电脑进入睡眠模式后点开.屏幕不亮? 电脑开机屏幕不显示,鼠标键盘灯亮怎么办? 电脑进入休眠时候 怎么办啊 显示器不亮 待机时间长之后,显示器点不亮 电脑进入睡眠后开机黑屏是怎么回事 描述持之以恒的名言有什么 关于持之以恒的名言名句 笔记本电脑唤醒休眠后显示器点不亮 做事要持之以恒的句子名言 电脑进入休眠唤醒后,显示屏无显示 有关持之以恒的名言警句 做事要持之以恒的名言名句格言 带持之以恒的,名人名言