2016-11-10 131 views
0

是建議在DART getter和setter用來定義諸如屬性:使用getter和setter

class Car { 
    Engine engine; 

    bool get isEngineRunning => engine.isRunning; 

    void set isEngineRunning(bool isRunning) { 
    engine.isRunning = isRunning; 
    } 
} 

什麼是它的優勢?

+1

的可能的複製[如何getter和setter改變達特屬性?](http://stackoverflow.com/questions/27683924/how-do-吸氣劑和制定者變化的屬性功能於鏢) – rinukkusu

回答

3

只有在需要時才需要執行,因爲除了轉發到字段外,您還需要執行一些其他代碼。

如果getters和setter只用於包裝一個字段,那麼getters/setters明確不鼓勵,因爲它們只是多餘的。

在你的情況下,因爲你沒有轉發到字段_isEngineRunning如果你不想公開Engine engine,那很好。

但是因爲engine是公開的,所以它可能只是太多的噪音和混淆,因爲同樣的事情可以用兩種不同的方式完成。

如果engine將私人倒不如考慮https://en.wikipedia.org/wiki/Law_of_Demeter