我有一个 java 类,它有一个使用 Facade (Singleton) 创建的静态成员。
A 类实现 InterfaceA { 私有静态 DataStore db = DataStoreFacade.getInstance("BDB"); //单例实例 公共无效保存(最终字符串键,最终字符串val){ db.save(key,val); } };
这里A类用作webservice(无状态bean)的成员变量。
我无法使用 EasyMock 测试此代码,因为无法覆盖 DataStore 实例。
有两种选择。
有一个构造函数采用 DataStore 的实例,该实例将设置为 db 成员变量。问题是我不希望 webservice 类知道创建了哪个数据存储实例。
提供一个额外的受保护的 Set 方法来覆盖 db 对象。这就是我在创建 DataStore 的 Easy Mock 对象并覆盖成员变量时使用的方法。设计是否正确。
其他的可能性是什么?