私は、さまざまな種類の構成ファイル(たとえば、テキストまたは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;
あなたの提案でしょうか?
私はSingle Responsibility Principleを実装しようとしているので、私は自分のContainerClassが単純なコンテナを表現したいと思っています。だから私は何かを考えると何か
ContainerClass myContainer = new ContainerClass(configFile);
はSRPと壊れますか?
恐らく私のContainerClassは、テキストまたは xmlファイルで初期化されていると言えます。パラメータは、とのxmlファイルの両方から得られるわけではありません。
[EDIT:追加情報]
ContainerClassは、データベース構成情報(パス名など)を有する容器を表します。
textFileはデータベース構成を表します。
xmlFileにもデータベース設定が含まれていますが、my textFileより多くの(データベース設定)パラメータがあります。
私はsthについて考える。以下のような:
TextFileConfigでIConfig config = new TextFileConfig(fileName);
ContainerClass container = config.ConverToContainer();
または
IConfig config = new TextFileConfig(fileName);
ContainerClass container = (ContainerClass)config;
:
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;
}
}
は、だから私は変換方式、型キャストまたはその両方を好むでしょうか?
まず、パフォーマンス、最高の使い方、個人的な習慣について考えます。
なぜこのコンテナクラスが必要ですか? XMLとテキストの両方のコンフィグレーションの基本クラスではないでしょうか? – Grzenio
私はそうは思わない:ContainerClassはデータベース構成を表す。私のtextFileにはデータベース設定が含まれています。私のxmlFileには異なるテーブルがあり、1つのテーブルにはmy textFileに似たデータベース設定が含まれています。さらに、私のxmlFileのデータベース設定には、textFileより多くのエントリが含まれています。 – Inno