当前位置: 首页 > 面试题库 >

委托模式的目的是什么?

卜泓
2023-03-14
问题内容

我查看了Android中SensorManager的源代码,发现当您将侦听器SensorEventListenerSensorManagerpasss控制注册到时,就会发现ListenerDelegate

我仅以此为例。我阅读了有关委托编程的Wikipedia文章,但仍不确定其目的。为什么要使用“委托”?它如何帮助控制程序?使用(或不使用)一个的缺点是什么?与听众一起使用最实用吗?

编辑:ListenerDelegate在第487行,有问题的方法在第1054行附近。


问题答案:

在GoF书中,委托并不完全是一种“设计模式”。它在许多情况下很有用,并且是其他模式的基础

  • 当您要在委派之前/之后执行一些其他操作时(这是Decorator模式,但它基于委派)。例如,Collections.synchronizedList(..)创建一个新集合,该集合委派给原始集合,但其方法已同步。
  • 当您具有不兼容的接口并且想要使另一个适应(适配器模式)时。您将获得原始对象,并从符合所需接口的方法中委托给它。例如,有一个EnumerationIterator类,它使枚举适应Iterator接口。该类具有一个hasNext()委托给enumeration.hasMoreElements()
  • 当您想向类用户隐藏一些复杂性时,可以使用委派给不同实际工作者的方法。例如,Car可以有start()openWindow()brake(),但每一种方法将实际委托给发动机,el.windows和制动系统


 类似资料:
  • 本文向大家介绍C#中的委托是什么?事件是不是一种委托?事件和委托的关系。相关面试题,主要包含被问及C#中的委托是什么?事件是不是一种委托?事件和委托的关系。时的应答技巧和注意事项,需要的朋友参考一下 委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的指针。 委托和事件没有可比性,因为委托是类型,事件是对象,下面说的是委托的对象(用委托方式实现的事件)和(标准的event方式实

  • 本文向大家介绍C#中的委托是什么?事件是不是一种委托?相关面试题,主要包含被问及C#中的委托是什么?事件是不是一种委托?时的应答技巧和注意事项,需要的朋友参考一下 答: 委托是将一种方法作为参数代入到另一种方法。 是,事件是一种特殊的委托。 //比如:onclick事件中的参数就是一种方法。

  • 委托 装饰者模式的另一种实现方案是委托。在这种机制下,一个对象可以和另一个对象相关联。比如你在用 UITableView ,你必须实现 tableView(_:numberOfRowsInSection:) 这个委托方法。 你不应该指望 UITableView 知道你有多少数据,这是个应用层该解决的问题。所以,数据相关的计算应该通过 UITableView 的委托来解决。这样可以让 UITable

  • 问题内容: 谁能用JavaScript解释事件委托,它有什么用? 问题答案: DOM事件委派是一种机制,它通过事件“冒泡”(也称为事件传播)的魔术,通过单个公共父节点而不是每个子节点来响应ui事件。 在元素上触发事件时,将发生以下情况: 事件被调度到其目标,并且在该目标中 找到的所有事件侦听器都会被触发。 然后,冒泡事件将触发所有其他事件侦听器,这些事件侦听器可通过向上跟随父链来查找在每个连续上注

  • 问题内容: 装饰器模式和委托模式(如果有)之间有什么区别?我不仅想了解实现细节,还不想了解用例差异和如何使用它们的主观观点。 装饰图案 委托模式 编辑: 您能否指向使用这些模式的OS源代码(在OS项目中)(尤其是委托,因为在Java IO类中使用了装饰)。我正在寻找一些实际用法,而不仅仅是虚拟示例。也许这些模式是相同的,只是标题不同。随时写这个意见。 问题答案: 装饰器使用委派,但使用一种非常特定

  • 众所周知,如果没有AspectJ,bean方法的自调用在Spring中是行不通的。 例如,请看这个问题。 使用以下代码: 将绕过代理(所以所有或魔术),因为它只是内部委托的调用...因此,我们应该在中注入一个bean(实际上是实例),并调用。这是可以理解的。 但是为什么代理是以这种方式实现的呢?为什么它不只是扩展目标类,重写所有公共方法并调用而不是?像这样: 它应该可以解决自调用问题,即绕过代理,