与之相反的方法是将getPostLogonMessage()的行为逻辑和loadAccountStatus()的状态改变工作放到一个方法里。下面的示例展示了这个错误的做法:

在这个实现里,行为方法getPostLogonMessage()没有包含任何的行为逻辑,而是简单的返回实例变量 this.postLogonMessage。这个实现存在着三个问题。首先,这个实现使得我们很难理解“post logon message”的逻辑是怎么工作的,因为它被包含在一个执行两个任务的方法里。第二,getPostLogonMessage()的重用是受限制的,因为它永远和loadAccountStatus()相关联。最后,在出现系统问题的情况下,CustomerAccountsSystemOutageException将会被抛出,使得方法在设置 this.postLogonMessage的值之前就停止了。这个实现也对测试产生了一个负面的影响,因为测试 getPostLogonMessage()逻辑的唯一方法是创建一个CustomerAccount对象,这个对象有一个在数据库里有用户名和密码的用户,而且这个用户的accountStatus被设置为“E”,被用来停止。这将导致为了这个测试必须给数据库做一个远程调用。这使得这个测试运行起来速度慢,而且由于数据库发生的改变将导致测试意想不到的失败。这个测试需要对数据库做一个远程调用,因为loadAccountStatus()方法也包含了行为逻辑,如果行为逻辑被模仿,那么测试测试的是模拟对象的行为,而不是实际对象的行为。