随笔分类 -  其它 / 面向对象

摘要:前段时间在网上看了小菜成长日记,它主要讲的是一个刚刚入行的初级程序员是如何一步步的把自己的程序面向对象的,应该说是真正面向对象的。实事上,根据客户的一种需求,做出一个解决方案并不难,难的是如何在原版程序上,以改动更小,时间最快的实现客户的第二次,第三次,第N次的改版工作,因为客户的程序不可能不会有任何变化,当你的程序研发出来后,客户在使用中更有新的需求,这是很正常的,也是软件行业里永远不变的,对于一个程序开发者来说,不要对此进行抱怨,应该以一种积极的态度去面对它,事实上,在程序改版的过程中,你利用面向对象的设计方法,在实现中运用它的设计原则及设计模型来解决实现中的问题,些不要为了原则而原则;不 阅读全文
posted @ 2011-07-29 23:21 张占岭 阅读(4086) 评论(0) 推荐(0) 编辑
摘要:返回目录Clone 分浅拷贝和深拷贝两者的区别:当对象中的属性是引用类型时,即类product中还有对类category的引用时,浅拷贝与深拷贝才有区别。浅拷贝:复制的是category的引用,当原对象改变时,会影响新对象,反之,亦然。深拷贝:复制的是category的值,即,它会new一个新的category,然后将原来的category元素的值复制到新元素,即它与原对象没有任何关系,只是内容相同。如何实现对象的拷贝功能:继承接口ICloneable实现Clone方法 ICloneable.Clone本身并不能区分(Deep or Shallow)你可以在Clone中调用Memberwise 阅读全文
posted @ 2011-07-27 17:17 张占岭 阅读(902) 评论(1) 推荐(1) 编辑
摘要:返回目录首先,类和结构都是创建对象的模板,都可以包含字段和方法,都需要用new实例化。 类中可以初始化非常量字段值,但是结构中不可以初始化非常量字段值。 结构是值类型,使用结构可以提高性能,类是引用类型。 结构不支持继承返回目录 阅读全文
posted @ 2011-07-27 12:05 张占岭 阅读(338) 评论(0) 推荐(0) 编辑
摘要:返回目录静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数.(注意,当你在本地调试一个网站项目中设置静态构造函数的话,它在IE没有被关闭之前,静态构架方法为静态字段赋值是不变的,它只有再你下次运行网站时,它才会发生变化) 1 class Program 2 3 { 4 5 static void Main(string[] args) 6 7 { 8 9 static_construct sc = new static_construct()... 阅读全文
posted @ 2011-07-27 11:50 张占岭 阅读(700) 评论(0) 推荐(2) 编辑
摘要:这个问题比较有力量,哈哈!例如:有两个表userbases和products两个表的主键分别为UserID和ProductID,那么,我想问有没有一种方法把它们的主键统一起来,用一个字段名称表示呢?事实上,这个问题可以从一个基础知识说起!接口,没错就是接口,我们知道接口中的一切,在它的实现类中都必须被实现,想一下,如果在接口中定义一个object类型或者string类型的字段,让所以子类都为它赋值,那不就OK了吗?哈哈,说干就干 /// <summary> /// 实体模块统一接口 /// </summary> public interface IEntity { // 阅读全文
posted @ 2011-07-22 17:49 张占岭 阅读(2248) 评论(1) 推荐(0) 编辑
摘要:文件上传无论在软件还是在网站上都十分常见,我今天再把它拿出来,讲一下,主要讲一下它的设计思想和实现技术,为了它的通用性,我把它做在了WEB.Service项目里,即它是针对服务器的,它的结构是关联UI(WEB)层与Service层(BLL)的桥梁.结构上传基类:上传文件的接口规范:接口的实现:UI层调用WEB.Service层的上传功能:(附代码) public class FileUploadController : Controller { WEB.Services.IFileUpload iFileUpload = null; public FileU... 阅读全文
posted @ 2011-07-19 16:33 张占岭 阅读(1960) 评论(14) 推荐(0) 编辑
摘要:SRP:单一职责原则,就是说一个类只提供一种功能和权有一个引起它变化的因素.OCP:开放封闭原则就是对一个类来说,对它的修改是封闭的,对它的扩展是开放的.DIP(IOC):依赖倒置原则:程序依赖于抽象,而不依赖于实现,它的主要目的是为了降低耦合性,它一般通过反射和配置文件来实现的.LSP:替换原则,就是基类出现的地方,通过它的子类也完全可以实现这个功能ISP:接口隔离原则:不关系细节的东西,只关心能够得到的服务,一般我们在定义对象时,都使用接口进行定义,这就是接口隔离原则的一个应用 阅读全文
posted @ 2011-07-18 15:28 张占岭 阅读(446) 评论(0) 推荐(0) 编辑
摘要:不要为了写而写写是在一个不完整的想法上进行的,改是你想法的扩充!最近,写程序,越来越觉得它是一种艺术,写程序又像是烹饪,你写的程序的质量如何也就是你烹出的美餐是否可以得到认可,而写程序中,第一个认可的人是你自己,其实才是客户! 阅读全文
posted @ 2011-07-15 17:18 张占岭 阅读(476) 评论(0) 推荐(0) 编辑
摘要:对于在页面上显示的文本框信息,我们在视图模块中定义成string就可以了,但如果是列表框呢,我们应该如何去定义更合理些呢?起初,我使用的方法是ViewData,然后在页面中再去强类型一下,如<%= Html.DropDownList("Type1",ViewData["Type"])%>这种方法破坏了对象的完整性,使它脱离了与对象的关系,我在做程序开发时,提供下面这种写法:<%= Html.DropDownList("Type1",Model.Type)%>这种写法说明,Type是本页面模块中的一个属性,类型为 阅读全文
posted @ 2011-07-15 14:53 张占岭 阅读(1327) 评论(3) 推荐(0) 编辑
摘要:Model:对于MVC来说,Model可不简单只是实体,它应该叫视图模型,这是我自己的理解,即视图中的数据由Model来提供,当视图的数据需要改变时,我们不用打开aspx或ascx文件,只需要修改相应的Model即可.我们要把Model看成是一个视图类,和界面有关的类,它内部的属性只和指定的页面有关,多于的属性则不需要.事实上MVC的实例已经说的很清楚了,仔细研究研究就会有一个很高的提高,理解它的意义,它的设计思路.不要把Model和Entity相混涤了,Entity是指与数据库对应的实体类,它与数据表一一对应,它可以通过一些代码生成器和entity framework生成工具和生成.看个例子 阅读全文
posted @ 2011-07-14 18:01 张占岭 阅读(11572) 评论(9) 推荐(0) 编辑
摘要:这是枚举公用属性类:#region 枚举属性扩展类 /// <summary> /// 枚举扩展方法 /// </summary> public static class EnumExtensions { public static string GetDescription(this Enum obj) { return GetDescription(obj, false); } public static string GetDescription(this Enum obj, bo... 阅读全文
posted @ 2011-07-08 14:33 张占岭 阅读(1078) 评论(0) 推荐(1) 编辑
摘要:Remoting的认识和学习要感谢张逸老师,看了他的blog后,使我对Remoting技术有了新的认识,下面总结一下.remoting实现的结构,分为服务端,远程服务对象和客户端,看图Remoting是一个分布式处理服务。服务器端首先创建通道(Channel),并自动开启监听通道。根据客户端发出的请求,传递远程对象。因此,编写Remoting程序,主要分为三部分: 1、被传递的远程对象; 2、服务器端监听程序; 3、客户端请求和处理对象程序; 一、被传递的远程对象 在Remoting中,被传递的远程对象类是有诸多限制的。首先,我们必须清楚,这里所谓的传递是以引用的方式,因此所传递的远程对象类必 阅读全文
posted @ 2011-07-06 10:38 张占岭 阅读(622) 评论(0) 推荐(0) 编辑
摘要:返回目录接口无疑是面向对象的程序设计中最重要的概念之一,它体现一种抽象,一种规范;即它只规定了具体的操作,而不对操作进行实现,它的实现由继承它的类去完成;它是一种规范,即,它要求实现它的类要对它的成员完全实现才行.看一段代码: 1 /// 2 3 /// 武器攻击的通用接口 4 5 /// 6 7 public interface IAttack 8 9 {10 11 /// 12 13 /// 攻击方法,被攻击对象是一个敌人对象14 15 /// 16 17 /// 18 19... 阅读全文
posted @ 2011-07-05 10:02 张占岭 阅读(701) 评论(3) 推荐(0) 编辑
摘要:返回目录嗨!又要和大家一起说说不忘本的文章了,其实我写的不忘本就是指定C#的一些基础知识,把基础知识从书面上拿出来,放到实践中去讲!咱领袖说的好:理论要联系实际吗!哈哈!先看一个最简单的枚举enum吧1 public enum UserBaseColumns2 3 {4 5 UserName = 1,6 7 Age = 2,8 9 }我们如何去使用它呢,很简单,如果我们希望拿到UserBaseColumns.UserName这个枚举元素的值,可以这样写(int)UserBaseColumns.UserName,也就是强转换一下就OK了,因为... 阅读全文
posted @ 2011-06-30 15:37 张占岭 阅读(732) 评论(6) 推荐(1) 编辑
摘要:global它是全局访问修饰符,即所有对象都是完整路径表示例如:Console.WriteLine();完整表示法:System.Console.WriteLine("ok");那什么时候用global呢,实事上,之个关键字我们一般用的不多,只有在自定义类与系统类重名时才用的,看代码: class Program { public class System { } static void Main(string[] args) { global:: System.Console.WriteLine("ok"); } }我们看到了,program类中也有一 阅读全文
posted @ 2011-06-28 17:44 张占岭 阅读(5603) 评论(1) 推荐(1) 编辑
摘要:1 public class ImgExtends 2 3 { 4 5 /// <summary> 6 7 /// 像本地图像文件上写字,并上传本地服务器 8 9 /// </summary> 10 11 /// <param name="imgserverurl">Web服务器上的图片路径</param> 12 13 /// <param name="title">图片上的文字</param> 14 15 /// <returns></returns>... 阅读全文
posted @ 2011-06-28 14:51 张占岭 阅读(408) 评论(0) 推荐(0) 编辑
摘要:List<Customer> customers = new List<Customer> { new Customer { Id = 1, Name="Dave", City="Sarasota" }, new Customer { Id = 2, Name="John", City="Tampa" }, new Customer { Id = 3, Name="Abe", City="Miami" } };而在2.0时代,我们为列表对象赋值要这样写 阅读全文
posted @ 2011-06-23 17:26 张占岭 阅读(584) 评论(0) 推荐(0) 编辑
摘要:为string类型,加一个扩展方法,IsNullOrEmpty,事实上.net已经把这个扩展方法集成了还可以设计一个过滤Email的扩展方法class Program{ static void Main(string[] args) { string newString = null; if (newString.IsNullOrEmpty()) { // Do Something } }}public static class Extensions{ public static bool IsNullOrEmpty(this string s) { return (s == null || 阅读全文
posted @ 2011-06-23 17:13 张占岭 阅读(376) 评论(0) 推荐(0) 编辑
摘要:部分类相信大家都用过,即对于团队开发时,如果共同完成一个功能,又不想破坏类的完整性,我们就可以引用部分类,在winform和webform自建的程序中,microsoft也是这样实现的.再使用部分类时没什么可说的,但在使用部分类里的部分方法时却有一些需要注意的幼!看代码: /// <summary> /// 部分类和部分方法 /// </summary> public partial class users { public string Result1 { get; private set; } public string Result2 { get; private 阅读全文
posted @ 2011-06-21 17:59 张占岭 阅读(367) 评论(0) 推荐(0) 编辑
摘要:1 namespace test 2 3 { 4 5 #region 武器接口和对每个武器的实现 6 7 /// <summary> 8 9 /// 武器攻击的通用接口 10 11 /// </summary> 12 13 internal interface IAttack 14 15 { 16 17 /// <summary> 18 19 /// 攻击,参数是被攻击的对象 20 21 /// </summary> 22 23 /// <p... 阅读全文
posted @ 2011-06-10 16:04 张占岭 阅读(543) 评论(0) 推荐(0) 编辑