小弟目前在看TIJ 4th 的第7章:复用类。由于初学,第7.3节代理没有搞清楚到底是什么意思?为什么要使用代理?如果我继承了一个原有类,而原有类中的方法并非private,何必使用代理这一间接手段?恳请各位赐教。

解决方案 »

  1.   

    你急什么哦十一. 委托(delegation):Java不直接支持。
           delegation介于组合和继承之间,新类包含一个成员对象(composition),但同时又在新类中公开该对象的所有(或部分)方法(象继承)。用于处理不能简单的用"has-a"、"is-a"或"is-like-a"来描述的类相互关系的问题(如太空船不是"is-a"或"is- like-a"太空船控制器,但又必须能够进行前进、后退等控制器的操作)。
           可以选择提供部分对象成员的方法,使得应用代理更灵活。
    java语言并不支持这种机制,但IDE通常都支持(如JetBrains Idea IDE等)。
             delegation和继承的不同 ,参见DetergentDelegation和Detergent两个类(练习11和书中的源代码):方法执行方式不同(继承通过调用继承父类的方法(不需显式调用),delegation调用自己的方法,其中是对对象成员的方法调用),结果不同。
    这是我学习的时候做的笔记