摘要:上回问题回顾 前文说到一位用户拿着业界标准开关(一个标准的StandardSwitcher,它依赖IStandardSwitchable接口才能工作,然而目前我们的灯并不支持这个接口)出现在我面前,叫嚣着他的“标准开关”应该能打开我们的灯。好吧,这个需求是合理的,的确应该支持。但是该死的是,为什么没有早一点儿知道这个标准的存在呢?这样就不需要花费时间和人力定义这个接口,现在也不会这么纠结。和上次一样,先讲故事、演进方案,再分析背后的思想。 这回主要讲解Adapter模式,GoF讲解了这个模式是什么,怎么用,用在什么地方。我想来解释一下Adapter模式的要点是什么,对Adapter模式的延展,
阅读全文
摘要:提纲 开灯的例子 暗流涌动 Guru眼中的依赖 DIP(依赖倒置原则) 为什么要解耦合? 接口的坏味道 同一张类图的不同解释——真假DIP 了解DIP有什么用?DIP用在什么地方? 下回预告 参考文献 开灯的例子 选开灯做例子,是因为这个例子既常见又简单,而且潜在的需求多样。对于最简单的灯,从功能上讲,按下灯上的开关,灯就开了。 用代码实现这样一个有开关功能的灯,也是一件很容易的事情。 public class Light{ public void TurnOn() { Console.WriteLine("Light Turn On"); } pub...
阅读全文
摘要:.NET提供了很多序列化对象的方法,了解他们之间的区别才能更好地确定使用哪一种序列化方式并正确地使用。本文从下面几个方面对标题中的三种序列化方法进行了分析。 范围:Property Or Field Or Both 可见性:Public or Private Or All 可访问性:Readonly Property 回调:指OnSerializing, OnSerialized, OnDeserializing, OnDeserialized这些回调。 包含循环引用的对象 包含Dictionary的对象 乱序读(XML) 自定义序列化结果。...
阅读全文