摘要: 开放-封闭原则,就是说软件实体(类、模块、函数等)应该可以被扩展,但是不可修改。'对于扩展是开放度(Openforextension)','对于更改是封闭的(Closefor Modification)'.怎样设计才能面对需求的改变却可以保持相对稳定,从而使得系统在第一个版本出来以后不断推出新的版本?如何应变?无论模块怎么‘封闭’,都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块应该对那种变化封闭做出选择。他必须猜出最有可能发证变化的种类,然后构建抽象来隔离那些变化。等到发生变化时立即采取行动[ASD]在我们最初编写代码时,假设变 阅读全文
posted @ 2013-03-26 12:47 Lovey 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 单一职责原则(SRP),就一个类而言,应该只有一个引起它变换的原因。软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离[ASD]。如果你能有多于一个的动机去改变一个类,那么这个类就有多于一个的职责[ASD]。 阅读全文
posted @ 2013-03-26 12:08 Lovey 阅读(174) 评论(0) 推荐(0) 编辑
摘要: C#构造函数的运用构造函数的名字不能随便起,必须让编译器认得出才可以被自动执行。它的命名方法既简单又合理:让构造函数与类同名。除了名字外,构造函数的另一个特别之处是没有返回值类型,这与返回值类型为void的函数不同。如果它有返回值类型,那么编译器将不知所措。在你可以访问一个类的方法、属性或任何其它东西之前, 第一条执行的语句是包含有相应类的构造函数。甚至你自己不写一个构造函数,也会有一个缺省构造函数提供给你。class TestClass { public TestClass(): base() {} // 由CLR提供 } 下面列举了几种类型的构造函数1)缺省构造函数class TestCl 阅读全文
posted @ 2012-02-19 22:19 Lovey 阅读(368) 评论(0) 推荐(1) 编辑
摘要: SQL:删除重复数据,只保留一条2009-08-20 17:13用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 delete 阅读全文
posted @ 2012-02-19 22:04 Lovey 阅读(430) 评论(0) 推荐(0) 编辑
摘要: CTS(Common Type System)通用类型系统,CLI(Common language Infrastructure) 公共语言基础结构CLS(Common language Specifaction) 公共语言规范:详细定义了一个最小功能集。 阅读全文
posted @ 2012-02-10 09:45 Lovey 阅读(119) 评论(0) 推荐(0) 编辑
摘要: onresize="changeWindowSize()" //这是一个原始的页面大小发生变化的javascript触发事件。还可以用jquery来写: $(window).resize(function(){ }); 来触发 窗体变化事件**************************************************************************************************************$("#parentElementId",parent.document) //获取父窗体的元素;* 阅读全文
posted @ 2011-12-08 18:03 Lovey 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 参数中的问好(?)表示可空类型;例如: public ActionResult ShowArticles(DateTime ? date) { if (!date.HasValue) { date=DateTime.Now; ViewData["Message"] = date; } return View(); }参数为null 总结(?)1. 任意一个可为空的值类型都可以与 Object 共存,而不会被认为是错误的不明确的重载,但是 Object 永远不会被调用 2. String、DateTime等无法与其他非 Object 类型作为两个重载,会产生不能明确调用的错误 阅读全文
posted @ 2011-11-23 14:02 Lovey 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 一,委托的使用基本步骤:1,声明委托类型 public delegate void MyDelegate(string name ,int age);2,创建一个委托,指引方法到委托 MyDelegate handler=new MyDelegate(MehtodOfMyDelegate);// 不用构造函数的 MyDelegate handler= MehtodOfMyDelegate;3,调用委托(如果函数) handler("yindongli",25);二,异步回调(将委托作为参数传递)基本步骤同上,如:public void MethodWithCallback( 阅读全文
posted @ 2011-11-23 12:30 Lovey 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 事件事件是类在发生其关注度事情时用来提供通知单一种方式,可以使用委托和匿名方法的形式指定多个处理程序。 阅读全文
posted @ 2011-11-23 12:30 Lovey 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 6.1第5章创建对象 var person a=new object(); person.name="Nicholas";person.age=29;person.job="software engineer";person.sayName=function(){alert(this.name)};//这种发法到缺点是使用同一个接口创建很多对象,产生大量重复代码,为了解决这个问题人们工厂模式的一个变体。6.1.1 工厂 模式 (解决了创建多个对象到问题,但是无法解决识别对象到问题<即怎样知道一个对象的类型,因此6.1.2>)function 阅读全文
posted @ 2011-11-21 20:23 Lovey 阅读(156) 评论(0) 推荐(0) 编辑