01 2013 档案

摘要:如果将引用类型通过公有借口暴露给外界,那么对象的使用者即可绕过我们定义的方法和属性来更改对象的内部结构。这违反了我们通常的直觉,也会导致常见的错误。考虑到这一点,你应该修改类暴露出的接口。如果只是简单的返回内部数据,那么实际上就给外界赋予了访问内部... 阅读全文
posted @ 2013-01-19 21:07 gyzhao 阅读(792) 评论(0) 推荐(0) 编辑
摘要:.NET中的事件其实就是一个观察者模式(Observer Pattern)的一个语法上的快捷实现(更多可以参考:使用委托和事件实现观察者模式)。事件是一种内建的委托,用来为事件处... 阅读全文
posted @ 2013-01-18 23:59 gyzhao 阅读(760) 评论(0) 推荐(0) 编辑
摘要:在C#语言中,回调是通过委托来实现的。委托为我们提供了安全的回调定义,大多数委托都和事件相关,但这不是委托的全部应用场景,当类之间需要通信,并且我们希望一种比接口更加松耦合的机制时,委托便是最佳选择。委托允许我们在运行时配置目标并且通知多个客户对象... 阅读全文
posted @ 2013-01-17 23:18 gyzhao 阅读(769) 评论(2) 推荐(0) 编辑
摘要:实现和覆写虚方法的区别:接口中声明的成员默认不是虚方法。派生类不能覆写基类中实现的接口成员。接口可以被显式实现,这会使针对该类的公有成员隐藏起来。接口与虚... 阅读全文
posted @ 2013-01-16 21:25 gyzhao 阅读(712) 评论(0) 推荐(0) 编辑
摘要:接口是一种按照契约设计的方式,一个类型必须实行接口中定义的方法。抽象基类则为一组相关的类型提供了一个共有的抽象。要注意二者的使用场景和区别:基类描述了对象是什么;接口描述了对象将如何表现行为。使用抽象基类还是接口,代表了对日后可能发生的变化两种... 阅读全文
posted @ 2013-01-15 22:38 gyzhao 阅读(2738) 评论(9) 推荐(6) 编辑
摘要:在保证类型可以完成其工作的前提下,我们应该尽可能的给类型分配最小的访问级别。可见性越低那么以后升级更改时所需的变化也就越少——因为能访问你的功能的代码越少,以后可能出现的修改也就会越少。创建内部类是一种常被忽略的限制类型作用域的方法,在创建一个类时... 阅读全文
posted @ 2013-01-14 20:33 gyzhao 阅读(771) 评论(0) 推荐(0) 编辑
摘要:"常量性"指的是:对象自创建后,它的值就保持不变。如果在构造函数中就验证了参数的有效性,那么就能够保证之后该变量值始终是有效的——因为已经不能再改变... 阅读全文
posted @ 2013-01-13 20:14 gyzhao 阅读(1769) 评论(0) 推荐(3) 编辑
摘要:.NET系统的默认初始化过程会将所有的对象设置为0。我们就会难免创建出一个初始化为0值的值类型,所以我们应该将0作为类型的默认值,可以避免一些不必要的Bug... 阅读全文
posted @ 2013-01-12 17:30 gyzhao 阅读(1461) 评论(4) 推荐(0) 编辑