博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网上购物系统(Task101)——业务逻辑层BLL(工厂模式实现热插拔)
阅读量:6176 次
发布时间:2019-06-21

本文共 1711 字,大约阅读时间需要 5 分钟。

源代码:13033480群共享

面向接口的业务管理层,已经很好地解决了数据库的切换问题,不过,这需要修改业务逻辑层中的两个类Category.csItem.cs中的语句

private staticreadonly ICategory dal =new WestGarden.DAL.Category();

private staticreadonly IItem dal =new WestGarden.DAL.Item();

然后重新编译、运行,相当于冷启动。能不能不再重新编译、运行,直接进行切换,实现所谓的“热插拔”呢?

下面的工厂模式解决了这一问题,你只需要改变一下Web.config配置文件,就可实现这一目标。

【操作步骤】

一、新建类库DALFactory,设置属性,添加引用→.NETSystem.Configuration;添加引用→项目→IDAL

二、添加类DataAccess.cs,代码如下:

using System.Reflection;using System.Configuration;namespace WestGarden.DALFactory{    public sealed class DataAccess    {        private static readonly string path = ConfigurationManager.AppSettings["WebDAL"];                private DataAccess() { }        public static WestGarden.IDAL.ICategory CreateCategory()        {            string className = path + ".Category";            return (WestGarden.IDAL.ICategory)Assembly.Load(path).CreateInstance(className);        }        public static WestGarden.IDAL.IItem CreateItem()        {            string className = path + ".Item";            return (WestGarden.IDAL.IItem)Assembly.Load(path).CreateInstance(className);        }    }}

 

三、在Web.config文件中添加如下键值

 

<addkey="WebDAL"value="WestGarden.DAL"/>

 

四、业务逻辑层BLL中,添加引用→项目→DALFactory

 分别修改Catagory.cs和Item.cs中的语句:

private staticreadonly ICategory dal = WestGarden.DALFactory.DataAccess.CreateCategory();

private staticreadonly IItem dal = WestGarden.DALFactory.DataAccess.CreateItem();

 

五、编译、运行吧……

 

会不会有童鞋问:

问:这就是工厂模式?

答:是的。

问:这就是大名鼎鼎的工厂模式??

答:是的。

问:就这么简单???

答:是的。

问:Why ????

有童鞋想回答“How?”的吗??

 

附冷笑话一则:

有两个渔夫在海边打鱼,一天一个渔夫打上来一条美人鱼,鱼尾巴以上是个超级美女,但是渔夫想了想把她放了,另一个渔夫不解,问:"Why"第一个渔夫耸耸肩,答道:"How?"

版权所有©2012,西园电脑工作室.欢迎转载,转载请注明出处.更多文章请参阅博客

转载于:https://www.cnblogs.com/WestGarden/archive/2012/05/13/3138422.html

你可能感兴趣的文章
【Map】Map、HashMap
查看>>
解决纯数字字符串在js方法参数中不稳定或被截取的问题
查看>>
如何在VMware安装Windows系统
查看>>
阶段性理解phantomjs/selenium/casperjs
查看>>
Java中高级开发工程师是什么技术水平(附28套Java进阶+高级视频教程)
查看>>
sudo命令
查看>>
第十九章 文本处理流编辑器:awk编程
查看>>
Xtrabackup+Rsync 备份数据库并同步到远端备份机
查看>>
activiti实战读书笔记——第九章 多实例
查看>>
php返回相对时间(如:20分钟前,3天前)的方法
查看>>
WilliamChart各种图表效果实现大全《IT蓝豹》
查看>>
shell脚本——linux主机监控
查看>>
eclipse配置jsp页面模板
查看>>
基于高德地图写的不同功能的地图应用
查看>>
DHCP服务器配置
查看>>
快速瓶颈识别
查看>>
运维工作总结201403
查看>>
我是菜鸟我加油……mysql主从同步
查看>>
[体系结构]设计模式(五)
查看>>
分布式文件系统
查看>>