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);
    
    
    
            }

        

  • 相关阅读:
    SMB(Server Message Block) Protocal Research
    IPC$概念及入侵方式研究
    Linux中的pipe(管道)与named pipe(FIFO 命名管道)
    RSA Encrypting/Decrypting、RSA+AES Encrypting/Decrypting
    卷积思想理解、Convolutional Neural Network(CNN)卷积神经网络初探
    IMPLEMENTING A GRU/LSTM RNN WITH PYTHON AND THEANO
    Recurrent Neural Networks(RNN) 循环神经网络初探
    Neural Networks and Deep Learning(神经网络与深度学习)
    基于USB网卡适配器劫持DHCP Server嗅探Windows NTLM Hash密码
    Encryption and decryption、Steganography、Decryption Tools
  • 原文地址:https://www.cnblogs.com/ike_li/p/5241426.html
Copyright © 2011-2022 走看看