zoukankan      html  css  js  c++  java
  • 网上购物系统(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

  • 相关阅读:
    ActiveMQ的学习(四)(消息投递方式+死信队列+重发策略)
    ActiveMQ的学习(三)(ActiveMQ的消息事务和消息的确认机制)
    ActiveMQ的学习(二)(ActiveMQ的持久化)
    ActiveMQ的学习(一)(ActiveMQ和JMS的介绍)
    redis总结(持续更新)
    easyUI--搜索条件控件的处理
    bootstrap的下载和引用
    springMVC总结
    easyUi--datagrid的一些处理
    测试工作一
  • 原文地址:https://www.cnblogs.com/java20130723/p/3211699.html
Copyright © 2011-2022 走看看