旅行者和汽车类之间如何紧密联系?

时间:2013-11-02 08:54:28

标签: java

class Traveler {   
    Car c=new Car();

    void startJourney() {
        c.move();
    }
}

class Car {
    void move() { }
}

2 个答案:

答案 0 :(得分:2)

你的问题可能意味着什么。完全猜测我会说问题可能是讨论使用接口和具体类。

这种情况下的耦合来自于这样一个事实:Traveler直接引用了Car类,并且它不能成为另一个没有潜在重大变化的类。您可以做的是让Car实现接口Transport并让Traveler传递给Transport。这样旅行者确实需要知道它正在使用什么类。

interface Transport {
    void move() { }
}

class Traveler {   
    final Transport transport;

    Traveler(Transport transport) {
         this.transport = transport;
    }

    void startJourney() {
        transport.move();
    }
}

class Car implements Transport {
    public void move() { }
}

// later
Traveler traveler = new Traveler(new Car());
traveler.startJourney();

答案 1 :(得分:0)

class Traveler
{
    Car c = new Car();

    void startJourney()
    {
        c.move();
    }
}

Traver班级对Car班级有深入的了解。他知道它存在,并且他知道它有一个名为move的方法。

但是,CarTraveler一无所知,所以我不会打电话给他们"紧密耦合"。