2013-05-03 63 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(); 
} 

,并将其保存在其他一些点。

相关问题