• 网上购物系统(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

  • 相关阅读:
    前端学PHP之面向对象系列第一篇——类和对象
    前端学PHP之面向对象系列第三篇——三大特性
    mysql之视图
    PHP中冒号、endif、endwhile、endfor这些都是什么
    abap将内表数据导出为excel文件
    调用、跳转到事务码、报表
    <转>sapjco3.dll already loaded in another classloader错误解决办法
    sap权限检查
    <转>DIALOG条件 CHAIN 语句
    ABAP DOI 下载SMW0的EXCEL和WORD模板
  • 原文地址:https://www.cnblogs.com/WestGarden/p/3138422.html
Copyright © 2020-2023  润新知