工厂模式+配置文件+反射实现数据访问程序

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 工厂模式+配置文件+反射实现数据访问程序

User表和Department表

 class User
    {
        private int _id;
        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }

        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
    }

    class Department
    {
        private int _id;
        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }

        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
    }

IUser类(Department类相类似)

 interface IUser
    {
        void Insert(User user);

        User GetUser(int id);
    }

    class SqlserverUser : IUser
    {
        public void Insert(User user)
        {
            Console.WriteLine("在SQL Server中User表增加一条记录");
        }

        public User GetUser(int id)
        {
            Console.WriteLine("在SQL Server中根据ID得到User表的一条记录");
            return null;
        }
    }

    class AccessUser : IUser
    {
        public void Insert(User user)
        {
            Console.WriteLine("在Access中User表增加一条记录");
        }

        public User GetUser(int id)
        {
            Console.WriteLine("在Access中根据ID得到User表的一条记录");
            return null;
        }
    }

DataAccess类

 class DataAccess
    {
        private static readonly string AssemblyName = "抽象工厂";
        //直接写字符串获得db类型
        //private static readonly string db = "Sqlserver";
        //private static readonly string db = "Access";
        //读配置文件获得db类型
        private static readonly string db = ConfigurationManager.AppSettings["DB"];

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

App.config配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="DB" value="Sqlserver"/>
  </appSettings>
</configuration>

客户端代码

             User user = new User();
            IUser iu = DataAccess.CreateUser();
            iu.Insert(user);
            iu.GetUser(1);

            Department dept = new Department();
            IDepartment id = DataAccess.CreateDepartment();
            id.Insert(dept);
            id.GetDepartment(1);

            Console.ReadKey();

UML图
在这里插入图片描述

目录
相关文章
|
5月前
|
IDE Java 开发工具
说一说 SpringBoot 中 CommandLineRunner
我是小假 期待与你的下一次相遇 ~
334 42
说一说 SpringBoot 中 CommandLineRunner
|
Linux 网络安全 Docker
docker centos7 安装ssh
docker centos7 安装ssh 原文链接:http://blog.csdn.net/mergerly/article/details/54709919 一.
4644 0
|
4月前
|
弹性计算 关系型数据库 API
自建Dify平台与PAI EAS LLM大模型
本文介绍了如何使用阿里云计算巢(ECS)一键部署Dify,并在PAI EAS上搭建LLM、Embedding及重排序模型,实现知识库支持的RAG应用。内容涵盖Dify初始化、PAI模型部署、API配置及RAG知识检索设置。
自建Dify平台与PAI EAS LLM大模型
|
11月前
|
人工智能 文字识别 API
|
设计模式 供应链 安全
多线程四大经典案例及java多线程的实现
多线程四大经典案例及java多线程的实现
1211 0
多线程四大经典案例及java多线程的实现
|
12月前
|
存储 前端开发 数据可视化
集团数字化经营分析平台(帆软版)
集团数字化经营分析平台(帆软版)
|
存储 数据采集 人工智能
TDengine 签约蘑菇物联,改造通用设备工业互联网平台
在当前工业互联网迅猛发展的背景下,企业面临着日益增长的数据处理需求和智能化转型的挑战。通用工业设备的高能耗问题愈发突出,尤其是由这些设备组成的公辅能源车间,亟需更高效的解决方案来提升设备运行效率,降低能源消耗。为此,蘑菇物联选择携手 TDengine,共同推进数智化转型。
258 3
|
SQL 数据库连接 网络安全
SQLServer非默认端口下事务复制代理作业服务无法启动的处理
【8月更文挑战第14天】若SQL Server非默认端口下的事务复制代理作业无法启动,可按以下步骤解决:1) 确认服务器连接字符串正确无误,包括非默认端口号;2) 检查防火墙设置,确保允许非默认端口的连接;3) 核实SQL Server配置已启用非默认端口;4) 查阅代理作业日志寻找错误详情;5) 重启SQL Server与Agent服务;6) 使用工具测试非默认端口的连接性。如问题持续,请寻求专业支持。
225 0
|
传感器 物联网 数据安全/隐私保护
智慧城市中的环境监测:物联网的角色
【6月更文挑战第6天】智慧城市中的物联网技术在环境监测中发挥关键作用,如路灯上的传感器实时监测空气质量和气候,智能垃圾桶自动检测垃圾容量。物联网使环境监测更全面、精准,但需解决数据安全、设备可靠性和标准统一等问题。随着科技发展,未来智慧城市将因物联网变得更加绿色宜居,环境监测将与城市各领域深度融合。我们期待科技带来的惊喜变革,为建设美好城市努力。
294 2
|
存储 运维 Oracle
选择Percona Server、MariaDB还是MYSQL|学习笔记
快速学习选择Percona Server、MariaDB还是MYSQL