摘要: 一,单一职责原则 当我们已面向对象思想编写程序,所有的类不能太过复杂,不要吧太多的功能在一个类中实现,比如一个网站页面文件,他的后台类里只能有操作页面显示的功能其他的业务逻辑和规则都不应该写在这个页面中,为什么?“如果一个类承担的职责过多,就等于吧这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏”。 我们经常会说恶性耦合,良性耦合,如果吧原来不是这个类应该承担的职责也写进这个类的代码中,那么这个就是恶性耦合,“软件设计真正要做的工作就是发现职责,并把它们互相分离开来”,一般来说如果某一个类当我们.. 阅读全文
posted @ 2011-12-08 16:37 适渊 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 以下纯属学习笔记,希望各位高手指出不当之处。在个人的使用个学习过程中感觉Strategy策略模式的主要功能就是用来封装各种业务规则(在需求分析的时候如果听到在不同的时候需要应用不同的业务规则),就可以考虑使用策略模式处理这种变化的可能性,它主要的代码实现过程如下首先创建一个(1)抽象类,并且在抽象类中编写一个抽象构造函数用于被以后的各种规则类继承,然后编写(2)规则类来继承父抽象类,并且实现他的抽象构造函数,再开发一个(3)上下文类其功能是承接前台文件和后台规则类的使用。以下具体代码是一个商场价格计算器的源代码,使用了Strategy策略模式的编程思想(1)策略模式抽象类父类策略模式抽象类父类 阅读全文
posted @ 2011-12-08 13:52 适渊 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 以下纯属个人学习笔记,并不是文章,但是还是希望有人可以指出错误,大家一起学习,谢谢编程需要用尽可能的办法去避免重复。先写一个父类,在父类中写一个虚方法,然后通过编写各种新的子类来继承这个父类,并且重写父类的那个虚方法,以上步骤完成后,再新建一个类用于判断在什么时候实例化那个类,而这个新建的类就是Simple factory pattern的体现,具体参照一下示例代码。计算器程序,用Simple factory pattern思想进行编写(1)准备被继承的父类,运算类Simple factory pattern中准备被继承的父类,运算类 publicclassOperation{privated 阅读全文
posted @ 2011-12-06 10:33 适渊 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 在C++、Java等众多OOP语言里都可以看到virtual的身影,而C#作为一个完全面向对象的语言当然也不例外。虚拟函数从C#的程序编译的角度来看,它和其它一般的函数有什么区别呢?一般函数在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,也就是写死了的!而虚函数在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行时期对象实例来动态判断要调用的函数,其中那个申明时定义的类叫申明类,那个执行时实例化的类叫实例类。如:飞禽 bird = new 麻雀();那么飞禽就是申明类,麻雀是实例类。具体的检查的流程如下1、当调用一个对象的函数时,系统会直接去检查这个对象 阅读全文
posted @ 2011-12-02 17:09 适渊 阅读(154) 评论(0) 推荐(0) 编辑
摘要: declare @sql nvarchar(4000)set @sql= N'select @TotalRecords=count(*) from ' + N'(' + @sqlFullPopulate + N') a 'EXEC sp_executesql @sql,N'@TotalRecords int output', @TotalRecords output问题:@sql= 后面有个N, N 起什么作用?答案: 加上 N 代表存入数据库时以 Unicode 格式存储。 N'string' 表示string是 阅读全文
posted @ 2011-11-30 14:38 适渊 阅读(569) 评论(0) 推荐(0) 编辑
摘要: 1.复制并创建新表现存表A,A表中有记录50条,一般复制并创建新表是用来备份某一张表的记录,可以使用以下语句select * into [新表名] from [老表名]实例select * into a01 from a还有一种情况,比如我们只需要A表的结构并不需要其中的50条记录,可以用下面的写法select * into a02 from a where 1=2注意:用这个方法来复制表的话,表的主键,约束,缺省值,都是带不到新表里去的,这个一定要注意.2.快速删除表记录日常开发中,我们删除表记录最常使用的语句就是delete from tablename where ....,类似这样的语 阅读全文
posted @ 2011-11-29 10:19 适渊 阅读(461) 评论(0) 推荐(0) 编辑
摘要: 动态创建服务器端控件在DataGrid的ItemDataBound事件中实现:private void MyGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e){// e.Item 就是 DataGrid 中的行if(e.Item.ItemIndex>=0)// DataGri... 阅读全文
posted @ 2009-11-04 20:30 适渊 阅读(291) 评论(0) 推荐(0) 编辑
摘要: namespace Ch13CardLib{ public class CardOutOfRangeException : Exception { private Cards deckContents; public Cards DeckContents { get { return deckContents; } } public CardOutOfRangeException(Cards so... 阅读全文
posted @ 2009-07-14 14:28 适渊 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 1.跟踪页面执行 设置断点是页面调试过程中的常用手段,除此之外,还可以通过查看页面的跟踪信息进行错误排查以及性能优化。ASP.NET中启用页面跟踪非常方便,只需在Page指令中加入Trace="True"属性即可:<%@PageLanguage="C#"Trace="true"> 跟踪信息可以分为两类: a.页面执行详细情况 其中主要包括页面生命周期中各事件列表、控件树列表(可以查看每... 阅读全文
posted @ 2009-07-10 10:53 适渊 阅读(158) 评论(0) 推荐(0) 编辑
摘要: C#中既可以通过值传递参数,也可以通过引用传递参数。通过引用传递参数,允许方法内成员改变参数的值,并保持更改。若要通过引用传递参数,可以使用ref和out关键字。ref和out的功能相当于C中的指针。   ref和out都可以使参数按引用方式传递,但两者有一定的区别。  1.ref传递参数时必须先初始化,而out传递参数时不需要事先初始化,但必须在方法中初始化。  2.out适合用在需要retru... 阅读全文
posted @ 2009-07-07 14:59 适渊 阅读(220) 评论(0) 推荐(0) 编辑