好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

三层架构基础上添加工厂类和装饰者模式,使代码更简洁更健壮

三层架构基础上添加工厂类和装饰者模式,使代码更简洁更健壮

 普通的三层架构我们是相当熟悉的(表现层--业务逻辑处理层---数据访问层)。最近由于一个小项目需要大量的使用.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)   编辑

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于三层架构基础上添加工厂类和装饰者模式,使代码更简洁更健壮的详细内容...

  阅读:32次