• 連載 Factoryパターン(リフレクション 及び抽象Factory)


    Factoryパターン(リフレクション 及び抽象Factory)

      Factoryパターンは、Static Factory Methodと呼ばれ、あるクラスを定義して、ほかクラスのインスタンスを作成する。作成されたのインスタンスは一般的に共有な親クラスあるいはインタフェースがある。

    はじめに

      今回はFactoryパターンの簡単なサンプルを作成してみました。

    1 インタフェースを用意

     1 namespace FactoryDemo
    2 {
    3 public interface IUser
    4 {
    5 void Insert(User user);
    6
    7 User GetUser(int id);
    8 }
    9
    10 }

    2 インタフェースを実装するクラスを用意

     1   public class SqlserverUser : IUser
    2 {
    3 /// <summary>
    4 /// DBに情報を保存する
    5 /// </summary>
    6 /// <param name="user"></param>
    7 public void Insert(User user)
    8 {
    9 Console.WriteLine("SqlserverのDepartmentテーブルに情報を保存する");
    10 }
    11
    12 /// <summary>
    13 /// DBから情報を取得する
    14 /// </summary>
    15 /// <param name="id"></param>
    16 /// <returns></returns>
    17 public User GetUser(int id)
    18 {
    19 Console.WriteLine("IDによってSqlserverのUserテーブルから情報を検索する");
    20 return null;
    21 }
    22 }
    23
    24
    25 public class AccessUser : IUser
    26 {
    27 /// <summary>
    28 /// DBに情報を保存する
    29 /// </summary>
    30 /// <param name="user"></param>
    31 public void Insert(User user)
    32 {
    33 Console.WriteLine("AccessのDepartmentテーブルに情報を保存する");
    34 }
    35
    36 /// <summary>
    37 /// DBから情報を検索する
    38 /// </summary>
    39 /// <param name="id"></param>
    40 /// <returns></returns>
    41 public User GetUser(int id)
    42 {
    43 Console.WriteLine("IDによってAccessのDepartmentテーブルから情報を検索する");
    44 return null;
    45 }
    46 }

    3 Factoryクラス

      ダイナミックにオブジェクトを初期化する。

     1 public class DataAccess
    2 {
    3
    4 /// <summary>
    5 /// リフレクションでユーザーオブジェクトを初期化する
    6 /// </summary>
    7 /// <returns></returns>
    8 public static IUser CreateUser(String AssemblyName, String db)
    9 {
    10 string className = AssemblyName + "." + db + "User";
    11 return (IUser)Assembly.Load(AssemblyName).CreateInstance(className);
    12 }
    13  }

    4 ユーザーエンティティクラス

     1     public class User
    2 {
    3 /// <summary>
    4 /// ユーザー番号
    5 /// </summary>
    6 private int _id;
    7 public int ID
    8 {
    9 get { return _id; }
    10 set { _id = value; }
    11 }
    12 /// <summary>
    13 /// ユーザー名
    14 /// </summary>
    15 private string _name;
    16 public string Name
    17 {
    18 get { return _name; }
    19 set { _name = value; }
    20 }
    21 }

    5 テストクラス  

     1     class Program
    2 {
    3 static void Main(string[] args)
    4 {
    5 User user = new User();
    6 Department dept = new Department();
    7
    8 IUser iu = DataAccess.CreateUser("FactoryDemo","Sqlserver");
    9
    10 iu.Insert(user);
    11 iu.GetUser(1);
    12
    13 Console.Read();
    14
    15 }
    16 }

     5 このコードを実行すると
     

    最後に

      今回のコードでFactoryパターン(リフレクション 及び抽象Factory)を実装しました。更に、XMLファイルでパラメタを配置しによってFacoryバターンを実装することができます。

    作成日時 2012-03-11 23:59:17

  • 相关阅读:
    shell 编程小例子
    第二节,oracle sql编程以及高级
    第一节、oracle的安装及数据库和表的创建,知识整理
    PL/SQL-->UTL_FILE包的使用介绍
    显式游标和隐式游标的区别
    Oracle游标—for、loop、if结合应用
    oracle的用户自定义异常
    使用@property
    使用__slots__限制绑定属性
    给类,实例绑定属性和方法
  • 原文地址:https://www.cnblogs.com/zhaidh/p/2391147.html
Copyright © 2020-2023  润新知