Mar*_*ace 3 oop design-patterns
我一直为大多数类属性提供 getter 和 setter。
虽然我读过这很糟糕 - http://www.codeweavers.net/getters-and-setters-are-evil/
依赖注入和单元测试不需要大多数属性都有一个 setter 吗?
应始终使用 getter 和 setter。getter 或 setter的原因不是为内部属性提供公共接口,而是提供对属性读/写的控制。它们提供对类属性的抽象。
即使您的类属性是私有的,您也需要 getter 和 setter。这允许在分配或读取之前控制值。
想想你很久以前设计的一个类,你对每次阅读做一些常见的计算。
class A{
private decimal x;
public void do_stuff(){
decimal a = this.x/70;
// process with a
}
public void do_anoter_stuff(){
decimal a = this.x/70;
// process again a
}
}
Run Code Online (Sandbox Code Playgroud)
现在您要更改因子 (70)。你怎么做呢?在每个地方都改变它?最好这样设计。
class A{
private decimal x;
private get_x(){ return this.x/70; }
public void do_stuff(){
// process with get_x()
}
public void do_anoter_stuff(){
// process again get_x()
}
}
Run Code Online (Sandbox Code Playgroud)
事实上,盲目地为每个属性使用 getter 和 setter 是邪恶的。经验法则是。使用私有 getter 和 setter 将所有属性声明为私有。稍后更改 getter 和 setter 的可见性,仅在需要时允许从外部世界访问