2016-11-10 88 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