我有一个类,它应该将数据从一种格式转换为另一种格式(Database 到 LibraryType)。看起来像:
public LibraryType convertToLibrary(Database db, Parameters params) {
Preconditions.checkNotNull(db," missing database for conversion");
Preconditions.checkNotNull(params, "missing parameters for conversion");
LibraryType lib = basicFactory.createLibraryType();
lib.setName(db.getName());
ComponentType type = convertStructure(db.getStructure(),params);
if (type != ComponentType.EMPTY) {
lib.addComponent(type);
}
return lib;
}
ComponentType convertStructure(Structure s, Parameters params) {
if (!params.isStructureAllowed(s)) return ComponentType.EMPTY;
ComponentType comp = basicFactory.createComponentType();
comp.setName(s.getName());
return comp;
}
我对这个概念有两个问题。
方法 convertStructure 应该是私有的,因为不需要从外部调用它,但是出于测试目的,我在包范围内定义了它,看起来不太好
参数(params)被传递给子方法。实际上我会使用一个可以在构造函数期间插入的类字段,但是由于使用 guice 作为 DI 框架,我无法将此数据传递给构造函数。参数将在运行时更改。所以我需要将它作为方法参数传递。我可以将它设置为 convertToLibrary 方法中的类字段,但是我无法测试方法 convertStructure。
我遇到了设计问题还是有任何有用的解决方法?将它分成不同的类是否有意义,这对我来说听起来不太好,因为我仍然觉得这是类中的一项责任(SRP)(转换数据)?
感谢帮助