zoukankan      html  css  js  c++  java
  • 三层架构基础上添加工厂类和装饰者模式,使代码更简洁更健壮

     普通的三层架构我们是相当熟悉的(表现层--业务逻辑处理层---数据访问层)。最近由于一个小项目需要大量的使用.net的数据缓存技术(HttpRuntime.Cache)。然而项目中个表的更新,插入,删除等操作比较频繁。三天更新一次。所以我采用一个比较简单的方法让表的更新,插入,删除的时候自动更新缓存。

          首先定义了一个数据操作接口

    public interface DataChangesInterface
    {

    void Update(object model);
    int Add(object model);
    void Delete(int ID);
    }

    让所有的业务逻辑层都实现改接口。

    public class News: DataChangesInterface
    {
    private readonly Maticsoft.DAL.News dal=new Maticsoft.DAL.News();

    void DataChangesInterface.Update(object model)
    {
    Update((Model.News)model);
    }

    int DataChangesInterface.Add(object model)
    {
    return Add((Model.News)model);
    }

    void DataChangesInterface.Delete(int News_ID)
    {
    Delete(News_ID);
    }
    #endregion
    }

    这是个一个装饰者类。我们通过这样的方式来调用  

    public static Maticsoft.BLL.News  mewsBll = new Maticsoft.BLL.News();
        DataChanges DC = new DataChanges(mewsBll);
    这样就简便了代码,可以这个类中加一些公共的逻辑处理。节省了去每个每个逻辑类中添加方法。此处我是加了 清除缓存的公共逻辑处理

     public DataChanges( DataChangesInterface DataChanges)
    {
    DataBLL = DataChanges;
    }
    private static DataChangesInterface DataBLL;

    public void Update(object model)
    {
    DataBLL.Update(model);
    methodBLL.RemoveAllCache();
    }
    public int Add(object model)
    {
    int i= DataBLL.Add(model);
    methodBLL.RemoveAllCache();
    return i;
    }
    public void Delete(int ID)
    {
    DataBLL.Delete(ID);
    methodBLL.RemoveAllCache();
    }

    小小感悟。一般的三层工厂也是跟这个差不多。利用接口变量指向实现类对象(多态)。

    鸟的神圣使命之关于网站页面速度优化的小小感悟(1)
    摘要: 通过对页面元素(变量,标签,字段,对象等)的二次封装,减少数据库的访问次数和提高代码的执行效率。 我们都知道 webform( 请求-处理 -回应) 是离线失忆的工作模式。一次请求往往需要对请求中的页面的多个标签进行绑定或者输出。经常造成需要多次访问数据库进行数据操作。因此我们可以自定义封装 一个页面类模型。阅读全文

    posted @ 2012-02-25 12:04 青牛客 阅读(1105) | 评论 (0) 编辑

    jquery-easyui datagrid 一个还行的表格插件 关于json部分的处理
    摘要: 最近有个小case 使用到了datagrid,在博客上分享下使用心得,欢迎大家指正,datagrid 使用上的都比较简单,搭配一般处理程序使用起来也比较爽,唯一要稍微动点心思的就是关于json格式的处理。还有datagrid 在ie中比较渲染慢的问题,这个问题断断续续用了几个办法都没解决,不给力,打开速度要好几秒。阅读全文

    posted @ 2012-02-18 10:31 青牛客 阅读(1082) | 评论 (5) 编辑

    关于无刷新上传插件uploadify 显示到页面及自定义上传的文件名称
    摘要: uploadify上传 uploadify上传文件并自定义文件名 今天正好遇到这个问题 uploadify并没有函数返回自己修改后的文件名 所以只能另辟蹊径了。通过前端来提交个 时间串来重新定义文件名。阅读全文

    posted @ 2012-02-17 16:03 青牛客 阅读(404) | 评论 (5) 编辑

  • 相关阅读:
    阿里云安装Kafka并配置外网访问
    Golang之select中time.After()为什么不生效
    macOS配置GitHub和GitLab共存
    Golang获取HTTP请求IP
    macOS下安装Python3.8并设置为默认版本
    mysql之力扣数据库题目620有趣的电影优化记录
    Pgsql之查询一个月份的天数
    Pgsql之查询一段时间内的所有年月yyyy-mm
    Pgsql之查询一段时间内的所有日期
    swiper下echarts点击事件失效
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2378748.html
Copyright © 2011-2022 走看看