.NETのデザインパターン - シンプル工場

シンプルな工場のデザインパターン:デザインパターンを作成します

抽象的に焦点を当てるだけで、オブジェクトを作成するための他のクラス

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          }

 

おすすめ

転載: www.cnblogs.com/Spinoza/p/11432568.html