我不确定我写的代码是否有意义,以下是大致的想法:
我有一个解析器类,它可以接收不同类型的文档。根据不同的类型,我会以不同的方式解析文档。
假设我有两种类型的文档,A和B。工厂模式似乎是一种相当好的方法来处理这个问题,以防将来需要扩展程序以处理其他类型,因此我会创建一个抽象类。
abstract class Parser
{
...
public void common_method() {
// something common that all parsers will use
// like file IO
}
// derived classes will override this
public abstract void specific_method();
}
class A_Parser : Parser
{
...
}
class B_Parser : Parser
{
...
}
我想询问的问题是,我在我的抽象解析器中声明了抽象方法和非抽象方法。编译器似乎没有抱怨,并且它仍然可以正确地工作。
这种做法是否不标准?也许有更好的设计方式吗?