2012-11-20 64 views
0

如果我有一個對象,例如僅在業務邏輯中設置對象的屬性?

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

我應該在哪一層放置這些操作?從設計的角度來看,在視圖類中應用像這樣的對象變化會是一個錯誤嗎?

回答

1

設計總是意味着如果您有幾個排除對方的選項,就可以找到最佳選擇。所以永遠不可能有一個正確的設計,對於你的設計目標來說,它永遠只能是更好或更差(這也不是普遍有效/好的)。

如果服務經常更改或者您的UI需要將數據提供給幾個類似的服務,請創建服務,否則您會發現自己始終都在更改視圖。另一個很好的理由是服務是可插拔的(即客戶可以配置應用程序使用幾種預定義的服務之一)。

如果您發現自己編寫了數百個服務,並且每個服務僅使用一次,每個服務只有一個方法等,您可能會浪費您的時間。