zoukankan      html  css  js  c++  java
  • C# 反射+抽象工厂模式

    此模式可以很好的更换程序使用不同的数据库

    1.用到的属性类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ReflectionAndAbstractFactor
    {
        class User
        {
    
            public int Id
            {
                get;
                set;
            }
    
            public String Name
            {
                get;
                set;
    
            }
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ReflectionAndAbstractFactor
    {
        class Department
        {
            public int Id
            {
                get;
                set;
            }
    
            public string DepartmentName
            {
                get;
                set;
            }
    
        }
    }


    2.接口  

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ReflectionAndAbstractFactor
    {
        interface IUser
        {
    
            void InsertUser(User user);
            User GetUser(int id);
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ReflectionAndAbstractFactor
    {
        interface IDepartment
        {
            void InsertDepartment(Department department);
    
            Department GetDepartment(int id);
           
        }
    }


    3.实现接口

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ReflectionAndAbstractFactor
    {
        class SqlServerUser:IUser
        {
    
            public void InsertUser(User user)
            {
    
                Console.WriteLine("sql server insert user " + user);
            }
    
            public User GetUser(int id)
            {
                Console.WriteLine("sql server get user " );
                return null;
            }
    
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ReflectionAndAbstractFactor
    {
        class SqlServerDepartment:IDepartment
        {
            public void InsertDepartment(Department department)
            {
                Console.WriteLine("sql server insert department");
            }
    
    
            public Department GetDepartment(int id)
            {
    
                Console.WriteLine("sql server get department");
                return null;
                
            }
    
    
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ReflectionAndAbstractFactor
    {
        class OracleUser:IUser
        {
            public void InsertUser(User user)
            {
                Console.WriteLine("oracle inser user");
            
            }
    
    
            public User GetUser(int id)
            {
                Console.WriteLine("oracle get user");
                return null;
            }
    
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ReflectionAndAbstractFactor
    {
        class OracleDepartment:IDepartment
        {
            public void InsertDepartment(Department department)
            {
                Console.WriteLine("oracle insert department");
            }
    
            public Department GetDepartment(int id)
            {
    
                Console.WriteLine("oracle get department");
                return null;
            }
    
        
        }
    }


    4.反射

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Reflection;
    using System.Configuration;
    namespace ReflectionAndAbstractFactor
    {
        class DataAcess
        {
            private static readonly string assemblyName = "ReflectionAndAbstractFactor";
            //private static readonly string db = "SqlServer";
    
            private static readonly string db = ConfigurationManager.AppSettings["db"].ToString();
            public static IUser CreateUser()
            {
                string className = assemblyName + "." + db + "User";
                return (IUser)Assembly.Load(assemblyName).CreateInstance(className);
    
            }
    
            public static IDepartment CreateDepartment()
            {
                string className = assemblyName + "." + db + "Department";
                return (IDepartment)Assembly.Load(assemblyName).CreateInstance(className);
    
            }
    
    
    
    
        }
    }

      5.使用

        

       private void button1_Click(object sender, EventArgs e)
            {
                User user=new User();
                user.Name="user name";
                user.Id=1;
                IUser _User = DataAcess.CreateUser();
                _User.InsertUser(user);
                _User.GetUser(1);
    
    
                Department department=new Department();
                department.DepartmentName = "department name";
                department.Id = 66;
    
                IDepartment _Department = DataAcess.CreateDepartment();
                _Department.InsertDepartment(department);
                _Department.GetDepartment(6);
    
    
    
            }

        

  • 相关阅读:
    Leet_Code_567_字符串排列
    LeetCode_424_替换后的最长字符串
    LeetCode_139_单词拆分
    为Linux 添加自定义命令
    javax.validation 自定义校验器
    MYBatis 动态SQL
    SPRING BOOT 15.1 TEST
    B-树和B+树的应用:数据搜索和数据库索引
    设计模式-代理
    数据结构与算法
  • 原文地址:https://www.cnblogs.com/ike_li/p/5241426.html
Copyright © 2011-2022 走看看