シンプルな工場のデザインパターン:デザインパターンを作成します
抽象的に焦点を当てるだけで、オブジェクトを作成するための他のクラス
1.着信パラメータに応じて異なる実装するオブジェクトを作成します
1つの 公共 静的IRace CreateRace(RaceType raceType) 2 { 3 IRace iRace = NULL ; 4 スイッチ(raceType) 5 { 6 場合RaceType.Human: 7 iRace = 新しいヒト()。 8 ブレーク; 9 ケースRaceType.Undead: 10 iRace = 新しい吸血鬼()。 11 ブレーク; 12 ケースRaceType.ORC: 13 iRace =新新ORC(); 14 BREAK ; 15 ケースRaceType.NE: 16 Irace = 新しい新しいNE(); 。17 BREAK ; 18です 。19 // 枝を追加 20がある デフォルト: 21は スロー 新しい新しい例外(" 間違ったraceType " ;) 22がある } 23が 復帰Irace; 24 }
2.作成されたオブジェクトに設定ファイルに渡されるパラメータであればライン上の構成ファイルへの変更など、コードを変更することなく、構成可能になります
1つの プライベート 静的 ストリング IRacTypeConfig = ConfigurationManager.AppSettings [ " IRacTypeConfig " ]。// IRacTypeConfig +参数 2 公共 静的IRace CreateRaceConfig() 3 { 4 RaceType raceType =(RaceType)Enum.Parse(typeof演算(RaceType)、IRacTypeConfig)。 5 リターンCreateRace(raceType)。 6 }
3.反射+設定ファイルは、設定可能+の拡張可能にオブジェクトを作成する(DLLに直接貼り付けを増大させることができたいです)
1つの プライベート 静的 ストリング IRacTypeConfigReflection = ConfigurationManager.AppSettings [ " IRacTypeConfigReflection " ]。 2 プライベート 静的 ストリング DLLNAME = IRacTypeConfigReflection.Split(' ')[ 1 ]。 3 プライベート静的文字列型名= IRacTypeConfigReflection.Split(' ')[ 0 ]; 4 /// <要約> 5 /// IOC的雏形可配置可扩展的 6 /// </要約> 7 /// <リターン> </戻り> 8 パブリック 静的IRace CreateRaceConfigReflection() 9 { 10 アセンブリアセンブリ= Assembly.Load(DLLNAME)。 11 型タイプ= assembly.GetType(型名)。 12 IRace iRace = Activator.CreateInstance(タイプ)としてIRace。 13 14 リターンiRace。 15 }