步步为营 .NET 设计模式学习笔记 九、Command(命令模式)
概述 在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,可以实现二者之间的松耦合。这就是本文要说的Command模式。 意图 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求
http://www.cyqdata.cn/cnblogs/article-detail-36321
步步为营 .NET 设计模式学习笔记 八、State(状态模式)
概述定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。
意图
状态模式主要解决的是当控制一个对象状态装换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简单化。
当一个对象行为取决于它的状态,并且它必须在运行时刻根据状态
http://www.cyqdata.cn/cnblogs/article-detail-36249
步步为营 .NET 设计模式学习笔记 七、Proxy(代理模式)
概述 在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切。这就是本文要说的Proxy模式。 意图 代理(Proxy)模式给某一个对象提供一个代理,并由代理对象控制对原对象的引用。 代理模式的英文叫做Proxy或
http://www.cyqdata.cn/cnblogs/article-detail-36191
步步为营 .NET 设计模式学习笔记 六、Adapter(适配器模式)
概述 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。那么如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?这就是本文要说的Adapter 模式。 意图 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
http://www.cyqdata.cn/cnblogs/article-detail-36089
步步为营 .NET 设计模式学习笔记 五、Prototype(原型模式)
概述 在软件系统中,有时候面临的产品类是动态变化的,而且这个产品类具有一定的等级结构。这时如果用工厂模式,则与产品类等级结构平行的工厂方法类也要随着这种变化而变化,显然不大合适。那么如何封装这种动态的变化?从而使依赖于这些易变对象的客户程序不随着产品类变化? 意图 在软件系统中,经常面临着“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一
http://www.cyqdata.cn/cnblogs/article-detail-36064
步步为营 .NET 设计模式学习笔记 三、Strategy(策略模式)
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable. Strategy lets the algorithm v
http://www.cyqdata.cn/cnblogs/article-detail-35956
步步为营 .NET 设计模式学习笔记 二、Abstract Factory(抽象工厂)
我们以一个线程例子来说明下抽象工厂是如何工作的.平时我们都会收发邮件,那我们就做个邮件引擎线程.
定义: 抽象工厂模式是一种创建型的模式。上面的比喻说明了抽象工厂就是生产同一个系列产品的东西,因为这一系列的产品是关联的,如果混用就可能出问题,所以就统一的在抽象工厂中进行创建。当要增加一个
http://www.cyqdata.cn/cnblogs/article-detail-35914
步步为营 .NET三层架构解析系列总结
这个系列我一共写了八篇,从什么是三层架构到一个简单的三层架构从数据库设计、SQLHelper设计、Modle设计、DAL设计、BLL设计到UI的设计作了简单的说明,在这其中有很多读者提出了很好的意见,我很高兴,我只是把我的理解粗略的写出来分享,以此来回顾以前做过的一些项目的总结,希望自己在这其中有些启发,同时也接受读者给我的批评,来使自己有所提高。
步步为营 .NET三层
http://www.cyqdata.cn/cnblogs/article-detail-35871
步步为营 .NET三层架构解析 八、UI的设计(GridView的设计及其分页)
这次我们设计员工操作列表Custom.aspx和部门操作列表Departmant.aspx的设计.以及如何设计GridView的分页功能.
先调用BLL设计方法获取数据的List列表,转换成PagedDataSource,再设置PagedDataSource属性来实现分页功能.
先看Custom.aspx的设计:
<div style="text-align: center">
http://www.cyqdata.cn/cnblogs/article-detail-35788
步步为营 .NET三层架构解析 六、BLL的设计
BLL层,又叫业务逻辑层,顾名思义,就是放置业务逻辑的地方.
业务逻辑层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。由于层是一种弱耦合结构,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计
http://www.cyqdata.cn/cnblogs/article-detail-35647
步步为营 .NET三层架构解析 五、DAL与IDAL的设计
IDAL:数据访问层接口,接口是一种系列‘功能’的声明或名单,接口没有实现细节.
DAL:数据访问层,主要用来做数据逻辑处理,具体为业务逻辑层或表示层提供数据服务。
先来看下IDAL的设计:
ICustom.cs
public interface ICustom
{
/// <summary>
/// 添加一条记录
http://www.cyqdata.cn/cnblogs/article-detail-35582
步步为营 .NET三层架构解析 四、Model设计(四种设计方式)
说到Model设计,我们先谈谈它的作用:
Model又叫实体类,model层里面的一个类对应数据库里面的一张表, 类里面的每一个属性对应表里面的一个字段,每个属性都有自己的 GET 和 SET 方法, 项目中的数据存取都要依靠GET和SET方法来实现.确切的说它不属于纵向的哪一层,而是所有层都要用到的业务实体层。其实最主要的作用还是用来传递参数.
下
http://www.cyqdata.cn/cnblogs/article-detail-35506
步步为营 .NET三层架构解析 二、数据库设计
要开发用户管理系统,我们首先要了解需求,现在就举一个简单需求,用户表,假设有两种角色用一个字段departID来判断,管理员和员工,
我们要先建一个用户表custom和一个部门表department:
CREATE TABLE [dbo].[custom](
[id] [int] IDENTITY(1,1) NOT NULL,
[cname] [nvarchar](50) COLLATE
http://www.cyqdata.cn/cnblogs/article-detail-35338
步步为营 .NET三层架构解析 一、什么是三层架构
在项目开发的过程中,有时把整个项目分为三层架构,其中包括:表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。三层的作用分别如下:
表示层:为用户提供交互操作界面,这一点不论是对于Web还是WinForm都是如此,就是用户界面操作。我们网站展示给用户看的界面。
业务逻辑层:负责关键业务的处理和数据的传递。复杂的逻辑判断和涉及到数据库的数据验证都需要在此做出处理。
http://www.cyqdata.cn/cnblogs/article-detail-35243