aho*_*der 43 java android design-patterns delegation
我正在通过源码查看Android中的SensorManager,发现当你将一个监听器SensorEventListener的SensorManager传递控制注册到一个ListenerDelegate.
我只以此为例.我阅读了关于委托编程的维基百科文章,但我仍然不确定其目的.为什么要使用'委托'?它如何帮助程序的控制流程?使用(或不使用)的缺点是什么?与听众一起使用最实用吗?
编辑:ListenerDelegate在第487行,所讨论的方法在第1054行附近.
Boz*_*zho 63
在GoF书中使用的意义上,授权并不是一种"设计模式".它在许多场景中都很有用,并且是其他模式的基础
Collections.synchronizedList(..)创建一个委托给原始集合的新集合,但其方法已同步.EnumerationIterator类,它使枚举适应Iterator接口.该类有一个hasNext()委托的方法enumeration.hasMoreElements()Car可以有start(),openWindow()和brake(),但每一种方法将实际委托给发动机,el.windows和制动系统(也参见此)Roo*_*kie 18
根据有效的Java(Joshua Bloch),组合比继承更有利.组合比继承有几个优点.其中一个直觉如下:考虑一个继承自基类的子类.因此,基类的任何更改都会使子类变得脆弱,因为子类依赖于基类.通过使用继承,我们在子类上进行绑定以依赖基类,这使得我们的代码变得脆弱.但是,通过使用合成,我们可以消除此限制.通过在类之间建立'has-a relationship'而不是像继承中的'is-a'关系来完成组合."委托模式"和"装饰模式"都是如何实现组合的示例.您可能希望阅读有效的Java书中有关"组合与继承"的章节,因为它非常有用.
有关简短说明,请参阅此文章:http://javarevisited.blogspot.com/2013/06/why-favor-composition-over-inheritance-java-oops-design.html
委托模式用于让其他人实际完成工作,因此,例如,在您的示例中,您将SensorManager不知道如何执行每个侦听器想要的操作,而只希望一个程序侦听传感器。
因此,通过调用registerListener来创建SensorManager侦听器,这些侦听器将传递信息,然后可以决定如何处理来自传感器的数据。
| 归档时间: |
|
| 查看次数: |
43961 次 |
| 最近记录: |