例如,我有一个班级
class Car
{
Engine TheEngine {get; set;}
}
当我设置引擎时
Engine engine = new Engine();
Car.TheEngine = engine;
如果我改变引擎
engine.Change();
然后Car.TheEngine也改变了。如何获得更好的设计以避免副作用?
答案 0 :(得分:1)
如果您公开mutator方法,那么根据定义,该实例可以进行变异。为了达到你想要的效果,让所有这些方法都返回一个新实例。
所以,这个:
{% if login_error %}
{{ login_error.messageKey }}
{% endif %}
<form action="{{ path('forum_login') }}" method="post">
<label for="username">Username</label>
<input type="text" id="username" name="_username" value="{{ last_username }}">
<label for="password">Password</label>
<input type="password" id="password" name="_password">
<input type="hidden" name="_target_path" value="{{ path('forum_admin') }}">
<button type="submit">Login</button>
</form>
应该改为看起来像这样:
public void Change()
{
this.PropertyB++;
}