总结
代理是继承与组合之间的中庸之道,我们使用代理时可以拥有更多的控制力,因此我们可以选择只提供成员对象中的方法的某个子集,而不是像继承和组合那样暴露全部方法。Java并没有对代理提供直接支持,但是在众多的Java框架(如Spring等)中,代理是核心思想之一。
例子
public class SpaceShipControls{
void up(
int velocity){}
void down(
int velocity){}
}
public class SpaceShip extends SpaceShipControls{
String name;
SpaceShip(String name){
this.name=name;}
public static void main(String[] args){
SpaceShip ship=
new SpaceShip(
"StarShip");
ship.up(
100);
}
}
public class SpaceShipDelegation{
private String name;
private SpaceShipControls controls=
new SpaceShipControls();
SpaceShipDelegation(String name){
this.name=name;}
public void up(
int velocity){
controls.up(velocity);
}
}