上一页 1 2 3 4 5 6 7 8 9 10 ··· 19 下一页
摘要: 理解:策略就是平常设计模式中所说的策略模式。因为当你有一个庞大的switch方法的时候,每一次新加一个条件,都要去修改这个方法,这样耦合性太高,不易维护也不易扩展。这样我们就可以使用策略的设计模式,使得每一种情况都封装在自己的类中,来提高扩展性和降低耦合性。 详解: 为了完成switch重构,我们需 阅读全文
posted @ 2016-03-22 21:44 IT少年 阅读(1225) 评论(0) 推荐(1) 编辑
摘要: 理解:经常写的代码中,有一些计算逻辑比较复杂的方法,写下来一个很长很长的方法,我们可以把这个方法,根据功能,分解成单独的几个小方法。这样做不仅能够增加代码的可维护性,而且增加了易读性。 详解: 重构前代码: 我们看到CalculateGrandTotal方法,里面用到了2个foreach循环,看一下 阅读全文
posted @ 2016-03-20 23:00 IT少年 阅读(2731) 评论(0) 推荐(0) 编辑
摘要: 理解:提取接口的意思是,多于一个类共同使用某个类中的方法或属性,那么我们可以把这些方法和属性提出来,作为一个单独的接口。这样的好处是解除代码间的依赖,降低耦合性。 详解: 先看重构前的代码: RegistrationProcessor 类只使用到了ClassRegistration 类中的Creat 阅读全文
posted @ 2016-03-20 22:47 IT少年 阅读(2019) 评论(0) 推荐(0) 编辑
摘要: 理解:根本没有父子关系的类中使用继承是不合理的,可以用委派的方式来代替。 详解:我们经常在错误的场景使用继承。继承应该在仅仅有逻辑关系的环境中使用,而很多情况下却被使用在达到方便为目的的环境中。 看下面的代码场景: 在这个例子中,Child并不是一个Sanitation,两者没有直接的逻辑关系。孩子 阅读全文
posted @ 2016-03-19 18:11 IT少年 阅读(1085) 评论(0) 推荐(0) 编辑
摘要: 理解:重命名就是把一些函数、字段、类、参数的名称 重命名为易于理解,最好是和自身的意义相同的名称。这样更易于理解,也可以减少大量的注释,名字即含义。 详解: 这个重构方法是我经常也是最常用的一种。我们经常给函数、类、字段等命名为一些难以理解,没有实际意义的名称,这样过段时间或者别人看你写的代码的时候 阅读全文
posted @ 2016-03-17 21:50 IT少年 阅读(625) 评论(0) 推荐(0) 编辑
摘要: 继续上节的对象深拷贝,上节讲了通过序列化和反序列化来实现深度拷贝,这一节我们来讲述一下第二种深度拷贝的方法,反射。通过反射来实现深度拷贝。 反射主要是在运行时获取对象的元信息,System.Reflection命名空间允许我们在程序运行时来获取对象的信息、创建已存在类的实例,也能够获取对象的属性和执 阅读全文
posted @ 2016-03-17 21:26 IT少年 阅读(1565) 评论(2) 推荐(0) 编辑
摘要: 简介: System.Object 几乎是所有的类、结构、委托类型的基类。System.Object有一个MemberwiseClone 的方法来帮助我们创建一个当前对象的实例。 存在的问题: System.Object 提供的MemberwiseClone 方法只是对象的浅拷贝,只能把当前对象的非 阅读全文
posted @ 2016-03-17 18:23 IT少年 阅读(2025) 评论(0) 推荐(0) 编辑
摘要: 平时工作中我们经常用foreach来迭代一个集合。比如 基本所有的集合都能够foreach,但是必须要实现IEnumerable接口。IEnumerable接口很简单,就只有一个IEnumerator GetEnumerator() 方法。看这个方法的定义就知道,仅仅是公开了另一个接口IEnumer 阅读全文
posted @ 2016-03-17 15:13 IT少年 阅读(1089) 评论(0) 推荐(0) 编辑
摘要: IEnumerable接口顾名思义就是 可枚举的,可列举的。 接口也很简单,返回一个 枚举器对象 IEnumerator 。 1. IEnumerable 与 IEnumerator IEnumerable只有一个抽象方法:GetEnumerator(),而IEnumerator又是一个迭代器,真正 阅读全文
posted @ 2016-03-17 10:36 IT少年 阅读(847) 评论(0) 推荐(0) 编辑
摘要: 我们经常在工作中用到对List,Dictionary对象的Foreach遍历,取出每一项。 其实这个接口很简单,只有一个属性2个方法。 我通过.NET refelefcor查看源码,看到 有2个方法一个属性。 object Current{get;} 就是反回当前数据, MoveNext()方法就是 阅读全文
posted @ 2016-03-17 10:05 IT少年 阅读(276) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 19 下一页