第七章 复用类 7.3 代理

90 阅读1分钟

第一种关系组合,第二种关系继承,第三种关系代理。代理是继承与组合之间的中庸之道。

下面是那个经典的例子,太空船需要一个控制模块

下面是太空船控制器代码

public class SpaceShipControls {  
    void up(int velocity) {}  
    void down(int velocity) {}  
    void left(int velocity) {}  
    void right(int velocity){}  
    void forward(int velocity) {}  
    void back(int velocity) {}  
    void turboBoost() {}  
}

下面是太空船代码

public class SpaceShipDelegation {  
    private String name;  
    private SpaceShipControls controls = new SpaceShipControls();  

    public SpaceShipDelegation(String name) {  
        this.name = name;  
    }  

    public void back(int velocity) {  
        controls.back(velocity);  
    }  

    public void down(int velocity) {  
        controls.down(velocity);  
    }  

    public void forward(int velocity) {  
        controls.forward(velocity);  
    }  

    public void left(int velocity) {  
        controls.left(velocity);  
    }  

    public void right(int velocity) {  
        controls.right(velocity);  
    }  

    public void turboBoost() {  
        controls.turboBoost();  
    }  

    public void up(int velocity) {  
        controls.up(velocity);  
    }  

    public static void main(String[] args) {  
        SpaceShipDelegation protector = new SpaceShipDelegation("NSEA Protector");  
        protector.forward(100);  
    }  
}