さまざまな種類の構成ファイル (テキストや xml など) からのパラメーターを持つコンテナー クラスがあります。
そこで、textConfigurationFiles 用のクラスと xmlConfigurationFiles 用のクラスを作成しました (このためのインターフェイス IConfigFile を後で実装すると思います)。
コンテナ クラスの初期化は次のようになります。
ContainerClass myContainer = new ContainerClass();
myTextConfig = new TextConfig(textFile);
myContainer.ParameterA = myTextConfig.ParameterA;
myContainer.ParameterB = myTextConfig.ParameterB;
myContainer.ParameterC = myTextConfig.ParameterC;
またはxmlの場合
ContainerClass myContainer = new ContainerClass();
myXMLConfig = new XMLConfig(xmlFile);
myContainer.ParameterA = myXMLConfig.ParameterA;
myContainer.ParameterB = myXMLConfig.ParameterB;
myContainer.ParameterC = myXMLConfig.ParameterC;
しかし、すべての単一の値を割り当てる代わりに、何らかの変換を行いたいと考えています。型キャストを実装する必要があるのか、ContainerClass オブジェクトを返す単純なメソッドを実装する必要があるのか わかりません。
myContainer = myTextConfig.ConvertToContainer();
また
myContainer = (ContainerClass)myTextConfig;
あなたの提案は何ですか?
私は単一責任の原則を実装しようとしているので、ContainerClass が単純なコンテナを表すようにしたいと考えています。だから私は次のようなものだと思います
ContainerClass myContainer = new ContainerClass(configFile);
SRPで壊れますか?
おそらく、ContainerClass はテキストファイルまたはxml ファイルによって初期化されることに言及する必要があります。パラメーターがテキストファイルとxml ファイルの両方から得られるわけではありません。
[編集: 追加情報]
ContainerClass は、データベース構成情報 (パス、名前など) を持つコンテナーを表します。
textFile はデータベース構成を表します。
xmlFile にもデータベース構成が含まれていますが、textFile よりも多くの (データベース構成) パラメータがあります。
私はsthについて考えます。お気に入り:
IConfig config = new TextFileConfig(fileName);
ContainerClass container = config.ConverToContainer();
また
IConfig config = new TextFileConfig(fileName);
ContainerClass container = (ContainerClass)config;
TextFileConfig で:
public class TextFileConfig : IConfig
{
ContainerClass container;
//
// Constructor
//
public TextFileConfig(string fileName)
{
//
// Initialize all values from file fileName
//
...
//
// Initialize container with standard values
//
container = new ContainerClass();
//
// Merge container with values from textFile
//
...
//
// Now container contains all values from textFile,
// all missing parameters are initialized with
// standard values.
//
}
public ContainerClass ConvertMethodOrTypecastThatsTheQuestion()
{
return container;
}
}
では、convert メソッド、typecast、またはその両方を優先する必要がありますか?
最初に、パフォーマンス、最適な使用法、および個人的な習慣について考えます。