我有一个接口Schema
,另一个名为SchemaParser
。SimpleSchemaParser
实现SchemaParser
,而SimpleSchema
实现Schema
。SimpleSchemaParser
具有方法parseSchema()
,该方法返回Schema
。这样,SimpleSchemaParser.parseSchema()
将返回一个Schema
对象。但是我知道SimpleSchemaParser
总是会返回SimpleSchema
。我应该如何更改设计以使其清晰可见,而不是总是将结果强制转换为SimpleSchema
?在这种情况下,我应该选择仿制药吗?
最佳答案
您确实可以使用泛型,但不是必需的:
class SchemaExample
{
interface Schema
{
// methods go here
}
interface SchemaParser
{
Schema parseSchema();
}
class SimpleSchema implements Schema
{
// implementation of Schema's methods
}
class SimpleSchemaParser implements SchemaParser
{
@Override
public SimpleSchema parseSchema()
{
// real business logic here...
return new SimpleSchema();
}
}
void usage()
{
SimpleSchema schema = new SimpleSchemaParser().parseSchema();
}
}
一个更广泛的问题是:为什么您要关心返回的是哪种模式的实现?是否有仅在
SimpleSchema
上存在的方法?这些可以上移到Schema
界面吗?