当前位置:  开发笔记 > 编程语言 > 正文

Functor和Command模式有什么区别?

如何解决《Functor和Command模式有什么区别?》经验,为你挑选了4个好方法。

我对命令模式非常熟悉,但我还不了解Functor和命令之间的理论差异.特别是,我正在考虑Java实现.两者基本上都是编程"动词",表示为对象.但是,在仿函数的情况下,正如我从一些示例中看到的那样,匿名内部类实现似乎很常见.谁能在那里为我清楚地解决这个问题?



1> Martin York..:

仿函数是一种实现,一种使对象表现得像函数的方法.

"命令模式"是一种设计模式.
仿函数是实现"命令模式"的一种方法.


@Martin York:你可能想要添加"营销" - 命令比"Functor"有更好的营销.

2> mackenir..:

仿函数是一种"语法级别"概念 - 它将代码打包在一个对象中,该对象可以在语法上像函数指针一样处理 - 即可以通过将参数列表放在其后的括号中来"调用"它.在C++中,您可以通过重写operator()使类成为仿函数.

命令模式中的命令是一个包含一些可运行功能的对象,但不要求它是一个仿函数.例如,它可以是实现接口ICommand的类,允许通过调用Do()来运行其命令.


值得注意的是,可以使用仿函数来实现命令模式.然而,大多数面向对象的程序员会选择实现命令接口的对象.

3> Özgür..:

以下是GOF的答案:

Coplien描述了如何在C++ [Cop92]中实现函数的函数对象.他通过重载函数调用操作符(operator())来实现其使用的一定程度的透明度.命令模式不同; 它的重点是保持接收器和功能(即动作)之间的绑定,而不仅仅是 维护功能.



4> mkoeller..:

从Apache Commons Functor页面的描述:


仿函数是可以作为对象操作的函数,或者是表示单个通用函数的对象.

Functors支持并鼓励一些强大的编程技术,包括:

以功能风格编程

高阶函数

内部迭代器

通过组合而不是继承和重载来重用和专门化

通用的"回调"或"扩展点"API

通用"过滤器"或谓词API

许多"行为"设计模式,如访客,战略,责任链等.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有