“告知,而非询问”原则强调对象应该被告知要做什么,而不是被查询其状态并在外部做出决策。这通过将逻辑保留在拥有数据的对象内部来促进封装并减少耦合。
询问式(坏):
if (user.profile.isComplete()) { // 允许结算 }
告知式(好):
if (user.canCheckout()) { // 允许结算 }