C#--抽象工厂设计模式--三层框架

版权声明:本文为博主原创文章,学习,探讨,交流 https://blog.csdn.net/qq_36482772/article/details/77960201

项目各层之间的引用关系

这里写图片描述


搭建基于抽象工厂的三层框架

这里写图片描述


设计数据访问接口模块DAL

这里写图片描述

这里写图片描述


编写SQLServer数据库的SQLHelper

这里写图片描述

和其他框架编写完全一样


使用SQLServer数据提供程序实现IDAL中的所有接口方法

这里写图片描述

这里写图片描述


编写访问Access数据库的AccessHelper

需要使用 using System.Data;
using System.Data.OleDb;
全部改成OleDb数据访问对象
这里写图片描述


使用Access数据库提供程序实现IDAL中的所有接口方法

这里写图片描述

这里写图片描述


编写配置文件

这里写图片描述

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add connectionString="Server=.;DataBase=StudentManageDB;Uid=sa;Pwd=aaa999a9" name="connString" />
    <add connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\SQL\DB\StudentManageDB.mdb" 
         name="accessConnString" />
  </connectionStrings>
  <appSettings>
    <add key="" value=""/>
    <add key="" value=""/>
  </appSettings>
</configuration>

基于反射技术编写抽象工厂类

这里写图片描述
这里写图片描述

配置抽像文件,多个数据库对象择期一

这里写图片描述


在BLl中使用接口和工厂

这里写图片描述

这里写图片描述


抽象工厂设计模式应用测试

设计好Access数据库,改变配置文件的相关配置信息,实现不同数据库访问。
将DAL模块需要单独复制到UI中的Debug文件夹中,供反射对象使用
这里写图片描述


抽象工厂设计模式总结

抽象工厂与简单工厂异同:

相同点:两者都是解决对象类型选择和对象动态创建的问题,保证系统可扩展性、可维护性。
不同点:简单工厂只能选择一个对象,而抽象工厂是选择一组对象。

抽象工厂的应用范围:

在开发中抽象工厂不仅能解决DAL的不同需求问题。也可以根据需要设计BLL的抽象工厂模式,比如有些财务软件,不同国家的财务算法有区别,这时候可以根据客户具体的要求设计不同业务逻辑,而DAL都使用相同的。

抽象工厂的不足:

设计模式在带来方便的同时,也会带来一些不足,典型的问题因为使用了反射技术造成软件系统性能一定程度的降低,但现在硬件性能高,影响在某种程度上降低很多。除非必要,不要随便使用设计模式。


项目代码Git

Access数据库文件

展开阅读全文

没有更多推荐了,返回首页