【问题标题】:Set an objects' property only in business logic?仅在业务逻辑中设置对象的属性?
【发布时间】:2012-11-08 18:37:47
【问题描述】:

如果我有一个对象,例如

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);
    }
}

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

【问题讨论】:

    标签: java model-view-controller jakarta-ee


    【解决方案1】:

    当您有多个相互排斥的选项时,设计总是意味着找到最佳选择。因此,永远不会有正确的设计,它总是只会更好或更差您的设计目标(这也不是普遍有效/良好的)。

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

    如果您发现自己编写了数百个服务并且每个服务只使用一次,每个服务只有一个方法,等等。您可能是在浪费时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-06
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多