我正在为这家合金钢公司设计一个实验室系统
某些类型的测试(例如分析测试,冲击测试......)必须适用于生产线中的每个产品,我使用TestTemplate
类来定义每个测试类型模板(例如分析测试模板)。
每种测试类型都有一些参数,每个参数可以采用以下形式:
(到现在为止,将来可能会找到一些新的参数类型)。
对于每个生产,我们应该为每个测试类型模板定义一些标称值(换句话说,每个测试类型模板的所需值),例如对于productA,分析测试的标称值可以如下:
而对于ProductB,名义可以是:
这是我对这个问题的设计
我的设计的主要目标是为测试模板实现动态结构,这种情况下是否有任何设计模式或一些最佳实践,或者这种设计是否足够好?
答案 0 :(得分:3)
我祝贺你的设计。这种设计在类和实例之间有非常明显的区别,并且一点也不差。
你的问题不清楚。您认为您的设计或需求改进有什么问题?有时问正确的问题是什么能给你正确的答案。
我要改进的一件事是TestParameter类。我可能已经概括了这一点。换句话说,我会创建一个RangeTestParameter,SingleValueTestParameter和一个SelectableTestParameter。我会让广义的TestParameter包含一个工厂方法:
ITestParameterValue ITestParameter.createValue()
由SelectableParameter实现,它将返回一个SelectableValue。 SelectableValue将通过其构造函数提供一组可选/允许的值。
通过这种方式,您可以解决设计中的两个问题,如果这是我的设计,我会问自己:
如果您想向用户展示可能的参数列表,可以创建一个TestParameterFactory,将您的参数类型链接到一些其他信息。这是一个简单的Java版本的工厂:
public class TestParameterFactory {
private final Map<String, ITestParameter.class> parameterTypes;
public TestParameterFactory() {
parameterTypes = new HashMap<String, ITestParameter.class>();
parameterTypes.put("Range", RangeTestParameter.class);
parameterTypes.put("Selectable", SelectableTestParameter.class);
parameterTypes.put("Single value", SingleValueTestParameter.class);
}
public getParameterTypes() {
return parameterTypes;
}
public ITestParameter createParameter(String name) {
ITestParameter parameterType = parameterTypes.get(name);
if (parameterType == null)
throw new IllegalArgumentException(name+ " is not a valid parameter type name");
return parameterType.newInstance();
}
}
我希望这会有所帮助。祝你好运!