如果我有一个物体,例如

class Car {
  boolean sold = false;
}


并且该对象存在于视图层中,如果我想更改该值会更好:在像这样的视图类中更改sold

class CarView {
  Car car;

  onButtonAction() {
      car.setSold(true);
      //or: carService.sellCar(car)
  }
}


要么

使用像carService.sellCar(car);这样的后端服务,其中

class CarService {
    sellCar(car) {
        car.setSold(true);
    }
}


这些动作应该放在哪一层?从设计的角度来看,在视图类中应用这样的对象更改是否会出错?

最佳答案

当您有多个彼此排斥的选择时,设计总是意味着找到最佳选择。因此,永远不可能有一个正确的设计,就您的设计目标而言(总的来说,这也不是普遍有效/良好的)总是好事或坏事。

如果服务经常更改,或者您的UI需要将数据提供给几个类似的服务,请创建一个服务,因为否则,您会发现自己一直在更改视图。另一个很好的理由是服务何时可插入(即客户可以将应用程序配置为使用几种预定义服务之一)。

如果您发现自己编写了数百个服务,而每个服务仅使用一次,则每个服务只有一个方法,依此类推。您可能会浪费时间。

10-08 09:33