2013-11-02 69 views
-1
class Traveler { 
    Car c=new Car(); 

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

class Car { 
    void move() { } 
} 
+1

不清楚你在問什麼,請詳細說明。 – amit

回答

2

你的問題可能意味着任何事情。完全猜測,我會說這個問題可能是在談論使用接口VS具體類。

這種情況下的耦合來自Traveler這個事實,它直接引用了Car類,它不能成爲沒有潛在重大變化的另一個類。你可以做的是Car實現一個接口Transport並讓Traveler傳遞一個Transport。這種方式Traveler需要知道它使用的是什麼類。

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(); 
+0

+1。不錯的代碼示例。 – Trying

0
class Traveler 
{ 
    Car c = new Car(); 

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

Traver類有Car類成竹在胸。他知道它存在,他知道它有一個名爲move的方法。

但是,CarTraveler一無所知,所以我不會稱之爲「緊密耦合」。