抽象的なファクトリ パターンを使用して、特定の問題を解決することを計画しています。ファクトリ パターンの実装には成功しましたが、ファクトリ パターンを抽象ファクトリに拡張できませんでした
例外の詳細を保存できる場所が 2 つあります
- ファイルシステム
- データベース
ファクトリ パターンを使用して、オブジェクト作成の詳細をクライアントから抽象化しました
インターフェース
public interface ILogException
{
void LogException();
}
FileSystemLogger
public class FileExceptionLogger : ILogException
{
public void LogException()
{
Console.WriteLine("File Exception Logger");
}
}
DBSystemLogger
public class DBExceptionLogger : ILogException
{
public void LogException()
{
Console.WriteLine("DB Exception Logger");
}
}
工場実装
public class ExceptionFactory
{
const int i = 1;
public static ILogException GetFactory()
{
if (i == 1)
{
return new FileExceptionLogger();
}
else if (i == 2)
{
return new DBExceptionLogger();
}
else
{
return new ServiceExcetionLogger();
}
}
}
これが最善の実装ではないことはわかっていますが、変更する予定です。
現在FileSystemLogger
、DatabaseLogger
それ自体がファクトリです。次の実装を and の下にグループ化FileSystemLogger
しDatabaseLogger
て、クライアントがFileSystemLoggerFactory
andを持つことができるようにします。DatabaseLoggerFactory
FileSystemLogger
- FlatFileSystemLogger
- XMLFileSystemLogger
データベースロガー
- SQLSERVERLogger
- OracleLogger
FileSystemLoggerFactory
との定義はどのように進めればよいDatabaseLoggerFactory
ですか?