Emm*_*uel 1 java maintainability
在大多数情况下,传统的编程智慧似乎不鼓励使用静态方法.通常,我有这些'经理',例如UserManager,AppointmentManager等,经理中的一个方法就是XXX getXXX(long xxxId)例如User getUser(long userId).我真的不明白为什么这不能成为静态方法.它看起来非常像工厂方法(la GoF工厂模式).很难放弃以下方便:
User user = UserManager.getUser(id);
并使用
UserManager userManager = new UserManager();
User user = userManager.getUser(userId);
代替.
PS我相信测试; 我不是一个'模拟测试'的粉丝,所以除了嘲笑我还需要理由.
避免对象工厂中的静态方法的主要原因是保持状态的能力.虽然静态方法可以将其状态保持在静态字段中,但这种方法很难保存和重置工厂的状态.
此外,无法编程到工厂的接口,因为静态方法不能用作接口实现.当您需要将对象的实现透明地切换到应用程序的其余部分时,这一点变得非常重要.
最后,无论是否使用模拟,静态方法都会使测试代码变得更加困难.您的测试很难验证您的工厂的某些方法是按特定顺序调用的.
| 归档时间: |
|
| 查看次数: |
541 次 |
| 最近记录: |