木其网络科技专业程序员代写http://www.xmsydw.com
程序员学历擅长经验网店链接
apenny硕士ASP.NET PHP 电子 通信设计 图像 编程 网络5年进入店铺
zheng_qianqian本科C语言 C++面向对象 Java5年进入店铺
guoguanl本科Java Web项目 JSP Hibernate Struts Mysql5年进入店铺

网上购物系统(Task101)——业务逻辑层BLL(工厂模式实现热插拔)

源代码: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,西园电脑工作室.欢迎转载,转载请注明出处.更多文章请参阅博客http://blog.csdn.com/yousuosi

posted @ 2012-05-13 17:22  程序流程图  阅读(309)  评论(0编辑  收藏  举报
木其网络科技专业程序员代写http://www.xmsydw.com
程序员学历擅长经验网店链接
apenny硕士ASP.NET PHP 电子 通信设计 图像 编程 网络5年进入店铺
zheng_qianqian本科C语言 C++面向对象 Java5年进入店铺
guoguanl本科Java Web项目 JSP Hibernate Struts Mysql5年进入店铺