2013-05-03 42 views
-1

我有兩個類:實體類是否可以在OOAD中返回其他實體實例?

public class Car 
{ 
    private int id; 
    private String name; 
    private String vendor; 

    /* ... */ 
} 

public class Garage 
{ 
    private int id; 
    private String name; 
    private String address; 

    /* get-set and others stuffs */ 

    public boolean addCar(Car c) { 
     /* 
      This will insert a car to tblCars 
      but belong to this garage 
     */ 
    } 

    public List<Car> getListCar { 
     /* 
      This will perform a SELECT query on tblCars 
      to choose cars belong to this Garage 
     */ 
    } 
} 

是它允許在OOAD?

回答

1

是否允許?你認爲會發生什麼 - OOAD警察把你拉到一邊給你一張票?

你可以做任何你想做的事情。事實之後,你會發現它是否被誤導了。

您的設計看起來可以接受,但車庫沒有Collection<Car>

這是CarGarage之間的一對多關係。這就是通常的做法。

我認爲Smalltalk MVC的想法有些過時。以下是我看到的層一個web應用程序:

view-->controller-->service--+-->persistence 
          | 
          +--> model 

控制器和視圖,並緊緊地連接在一起。

該服務是知道DAO和模型對象的事情。他們履行用例和自己的工作單位。

+0

謝謝,我的意思是,例如,在三層設計模式中,表示層不應直接調用數據訪問層,而是通過控制層,因此,這些規則是否禁止一個實體調用/訪問/返回其他實體? – 2013-05-03 13:01:47

+0

視圖應該沒有對控制器的引用(在MVC中)。箭頭應該從控制器中查看。 – 2013-05-03 13:14:00

+0

它旨在顯示信息流,而不是依賴關係 – duffymo 2013-05-03 13:56:40

1

這一切都取決於您的要求。如果您需要在每次進入車庫時節省一輛車,然後使用委託來處理數據庫插入:

public boolean addCar(Car c) { 
    Delegate.getInstance().addCarToGarage(this, c); 
} 

public List<Car> getListCar { 
    Delegate.getInstance().getAllCars(); 
} 

否則只要把它作爲

public boolean addCar(Car c) { 
    myCarList.add(c); 
} 

public List<Car> getListCar { 
    return myCarList(); 
} 

,並將其保存在其他一些點。

相關問題