我有两个班级:
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允许这样做吗?
答案 0 :(得分:1)
允许?您认为会发生什么 - OOAD警察将您拉到一边并给您一张票?
你可以做任何你想做的事。你会发现事后是否误导了它。
您的设计看起来可以接受,但车库没有Collection<Car>
。
这是Car
和Garage
之间的一对多关系。这就是通常的做法。
我认为Smalltalk MVC的想法有点过时了。以下是我查看网络应用程序图层的方法:
view-->controller-->service--+-->persistence
|
+--> model
控制器和视图紧密耦合在一起。
服务是了解DAO和模型对象的东西。它们满足用例和自己的工作单元。
答案 1 :(得分: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();
}
并将其保存在其他位置。