概述创建型模式,就是用来创建对象的模式,抽象了实例化的过程。它帮助一个系统独立于如何创建、组合和表示它的那些对象。本文对五种常用创建型模式进行了比较,通过一个游戏开发场景的例子来说该如何使用创建型模式。为什么需要创建型模式所有的创建型模式都有两个永恒的主旋律:第一,它们都将系统使用哪些具体类的信息封装起来;第二,它们隐藏了这些类的实例是如何被创建和组织的。外界对于这些对象只知道它们共同的接口,而不清楚其具体的实现细节。正因如此,创建型模式在创建什么(what),由谁(who)来创建,以及何时(when)创建这些方面,都为软件设计者提供了尽可能大的灵活性。假定在一个游戏开发场景中,会用到一个现代 Read More
posted @ 2011-10-24 11:49 赤卫 Views(230) Comments(0) Diggs(1)
一、 从初学者的浅显角度来看,其实这两者有很多相识之处,当然也有很多不同之处。要理解它们,应该先从面向对象思想开始。面向对象思想里面,最基本的就是封装,继承和多态。所谓封装,说的小,方法(函数)也就是对一种操作的封装,说的大,用类来描述一个具体的对象。那么在面向对象程序中应该说对封装还有一层新的定义,即将类的描述抽象化,也就是说描述类的外貌而不去考虑它的实际。那么我们回过头来看抽象类,它必须被继承使用,描述的其实是一种继承关系,即"is a"的关系。类继承它,也就是说类拥有它所有抽象方法等,那么也就是类遵循了它所定义的规范。但是呢,这种规范是通过继承而来,类的发展必须依赖它 Read More
posted @ 2011-10-24 09:55 赤卫 Views(152) Comments(0) Diggs(0)
一、抽象类: 抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。 二、接口: 接口是引用类型的,类似于类,和抽象类的相似之处有三点:1、不能实例化; 2、包含未实现的方法声明; 3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员); 另外,接口有如下特性:接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些. Read More
posted @ 2011-10-24 09:54 赤卫 Views(98) Comments(0) Diggs(0)
1、实现删除前弹出警告框,单击“确定”则执行,单击“取消”则不执行。 a、为按钮添加属性的方式: Button.Attributes.Add("onclick ", "javascript:return confirm( '确定删除吗? ') "); b、在.aspx页面为按钮控件添加属性的方式: OnClientClick="return confirm('你确定你要删除吗?');" Read More
posted @ 2011-10-18 10:34 赤卫 Views(138) Comments(0) Diggs(0)
错误: 每个页面的生命周期为用户的访问开始到结束,也就是说程序中的全局变量同时生存到用户的访问结束.正确: 每个页面的生命周期为用户的每一次访问,也就是说每一次客户端与服务器之间的一个往返过程.全局变量的生命周期在此之间.例:string gb_string;void Page_Load(){ if(!IsPostBack) { //第一次被访问的代码 gb_string ="Test!"; }}void btnSubmit_Click(Object sender, EventArgs e){ //在这里gb_string 为空,是这一次postback新建的字符串 //跟 Read More
posted @ 2011-10-11 09:49 赤卫 Views(168) Comments(0) Diggs(0)
1、命名约定Pascal和Camel命名约定编程的命名方式主要有Pascal和Camel两种(Pascal:每个单词的首字母大写,例如ProductType;Camel:首个单词的首字母小写,其余单词的首字母大写,例如productType)以下是一些常用的C#成员及其推荐命名方法:标志符规则实例与描述类classPascalApplication枚举类型enumPascal记住,是以Pascal命名,切勿包含Enum,否则FXCop会抛出Issue委托delegatePascal以Pascal命名,不以任何特殊字符串区别于类名、函数名常量const全部大写全部大写,单词间以下划线隔开接口in Read More
posted @ 2011-09-30 00:31 赤卫 Views(244) Comments(0) Diggs(0)
片段 1usingSystem.Data.OleDb;...staticvoidMain(){Application.Run(newForm1());}privatevoidForm1_Load(objectsender,System.EventArgse){DataTablemyT=ExcelToDataTable("D:/文件/新武昌站点资料.xls","sheet1");Stringmystr=myT.Rows[0][0].ToString();this.textBox1.Text=mystr;}publicstaticDataTableExcel Read More
posted @ 2011-09-29 17:56 赤卫 Views(219) Comments(0) Diggs(0)
我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。1.面向接口编程和面向对象编程是什么关系首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。2.接口的本质接口,在表面上是由几个没有主体代码的方法定义组成的集 Read More
posted @ 2011-09-29 17:56 赤卫 Views(168) Comments(0) Diggs(0)
通过 NHibernate 查询返回的表数据通常都是IList<T>,但在实际使用中有些数据控件在数据绑定上对IList的支持并不是很好,所以有时候将IList转换成DataSet还是有必要的。在Vinson的Blogs中提到了怎么将IList转换成DataSet,可惜源码是VB.NET的。 下面是我根据IList转换成DataSet中的VB.NET源码转换成C#,由于现在做项目是用 VS 2005 ,所以也对其改进,让它支持C#2.0 中的泛型。代码如下:Code highlighting produced by Actipro CodeHighlighter (freeware Read More
posted @ 2011-09-29 17:42 赤卫 Views(444) Comments(0) Diggs(0)
BindingList的主要特点在于,它可以在加入新的元素或者元素发生修改的时候触发相应的事件,而在基本集合类中是不具有这些功能的,而且由于在基本集合中Add方法不是Virtual方法,要想让它触发时间还真不是很方便。不过BindingList可以很好的满足你的功能。 在Windows表单编程中,使用DataGridView可以很方便与数据库查询结果绑定,但是有时候查出来的数据需要经过一番处理才显示,这时候就不能直接绑定了。借助于BindingList,你便可以很方便得实现这个功能。 BindingList是一个泛型容器,可以直接赋值给DataGridView的DataSource。而且以后的 Read More
posted @ 2011-09-29 17:33 赤卫 Views(1765) Comments(0) Diggs(1)