摘要: Using the CodeThis is a helper class that can be used to perform a deep copy of an object:CollapseUsage of this class becomesObjectCopier.Clone(objectBeingCloned);.Points of InterestIn case you prefer to use the new Extension methods of C# 3.0, change the method to have the following signature:Now t 阅读全文
posted @ 2010-07-20 16:19 qiang.xu 阅读(338) 评论(0) 推荐(0)
摘要: 应用场景: 复杂对象构建,这些对象是可能不断变化的,但是这些对象的借口是相对稳定的。实现代码: public interface INormalActor { INormalActor Clone(); } public interface IFlyActor { IFlyActor Clone(); } public interface IWaterActor { IWaterActor Clone(); } // 深拷贝通过序列化实现序列化 [Serializable] public class NormalActorA : INormalActor { #region INormalAc 阅读全文
posted @ 2010-07-20 16:06 qiang.xu 阅读(179) 评论(0) 推荐(0)
摘要: 应用场景:在软件系统中,经常面两“某个对象”的创建的工作,但是由于需求的变化,这个对象经常面临剧烈的变化,但是接口是相对稳定的。这里可以使用Factory Pattern来实现。Factory Pattern针对的是一个对象,而Abstract Factory针对的是一系列的对象的变化。实现代码:接口实现: public enum Direction { NORTH, SOUTH, WEST, EAST }; public interface ICar { void Startup(); void Run(); void Turn(Direction d 阅读全文
posted @ 2010-07-20 14:37 qiang.xu 阅读(186) 评论(0) 推荐(0)
摘要: 最近在看设计模式的一些东西,在讲到builder模式中使用到了c#的反射机制,从网上找了写资料,整理如下:在C#中,我们要使用反射,首先要搞清楚以下命名空间中几个类的关系:System.Reflection命名空间(1)AppDomain:应用程序域,可以将其理解为一组程序集的逻辑容器(2)Assembly:程序集类(3)Module:模块类(4)Type:使用反射得到类型信息的最核心的类他们之间是一种从属关系,也就是说,一个AppDomain可以包含N个Assembly,一个Assembly可以包含N个Module,而一个Module可以包含N个Type.AppDomain这个类我们等下再来 阅读全文
posted @ 2010-07-20 13:03 qiang.xu 阅读(198) 评论(0) 推荐(0)
摘要: 应用场景:在软件系统中,有时面临着“一个复杂对象的创建”的工作,通常是由各个部分的是使用一定的算法来过程的。由于需求的变化(各个部分在变化),每个部分经常面临巨大的变化,但是将他们组合在一起的算法确实相对稳定的。同样的构建过程可以创建不同的表示。实现代码:interfaces: // 这里是相当于能够提供的服务,客户端只需要使用这些接口皆可以了。 public interface IBuilder { void BuildDoor(); void BuildWalls(); void BuildWindows(); void BiildFloor(); 阅读全文
posted @ 2010-07-20 10:40 qiang.xu 阅读(186) 评论(0) 推荐(0)