私が書いているコードが意味をなすかどうかはわかりません。一般的な考え方は次のとおりです。
さまざまな種類のドキュメントを取得するパーサークラスがあります。タイプに応じて、ドキュメントの解析方法が異なります。
したがって、AとBの2つのタイプのドキュメントがあるとします。追加のタイプを処理するためにプログラムを拡張する必要がある場合に備えて、ファクトリパターンはこれを実行するためのかなり良い方法のように思われるので、抽象クラスを作成します。
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
{
...
}
私が疑問に思っている問題は、抽象パーサーで抽象メソッドと非抽象メソッドを宣言したという事実です。コンパイラは文句を言っていないようですが、それでも正しく動作しているようです。
これは非標準ですか?たぶんこれを設計するためのより良い方法がありますか?