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) 编辑

  • 相关阅读:
    Python获取秒级时间戳与毫秒级时间戳
    时间戳与时间类型转化(秒级时间戳)
    linux压缩和解压缩命令
    对于Python中@property的理解和使用
    探索性测试方法
    Linux 中 grep 命令的 12 个实践例子
    在 Linux 启动或重启时执行命令与脚本
    亲测的orabbix监控Oracle过程
    find 使用搜集
    Centos7.3-mysql5.7复制安装过程
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2378748.html
Copyright © 2011-2022 走看看