在一些C#代码中常常可以看到
//An Simple Example By Ray Linn
class CarCollection :ICollection
{
IList list;
public void Add(Car car)
{
list.Add(car);
}
.... function list for ICollection...
public void listPrice()
{
foreach(Car car in list)
System.Console.WriteLin(car.Price);
}
......more specifical function list...
}
class PetCollection :ICollection
{
IList list;
public void Add(Pet pet)
{
list.Add(pet);
}
.... function list for ICollection...
public void FeedPet()
{
foreach(Pet pet in list)
System.Console.WriteLin(pet.Eating());
}
......more specifical function list...
}
这样的代码在很多Open Source项目中是很经常看到的,比如Cecil,其共同特点是:某种特定类型的Collection+该Collection特殊的操作,在一个项目中可能充斥着数十个类似的Collection,类似的代码在Java中很难被重构,但是在C#中,却可以借助扩展方法与范型进行代码的精减。
首先创建范型的Collection,该例子可以用List<T>来代替,但作为例子,我们假设该List<T>是特殊的(可能有一些delegate)
Java代码
public CommonCollection<T>:ICollection<T>
{
IList<T> list
.... function list for ICollection...
}
public CommonCollection<T>:ICollection<T>
{
IList<T> list
.... function list for ICollection...
}
对于Car和Pet的特殊操作,我们通过扩展方法来实现
public static class CarExt
{
//Ext Function For CommonCollection<Car> by Ray Linn
public static void listPrice(this CommonCollection<Car> collection)
{
foreach(Car car in collection)
System.Console.WriteLin(car.Price);
}
......more specifical function list...
}
public static class PetExt
{
//Ext Function For CommonCollection<Pet> by Ray Linn
public static void FeedPet(this CommonCollection<Pet> collection)
{
foreach(Pet pet in list)
System.Console.WriteLin(pet.Eating());
}
}
通过这样的方式,我们就实现了重构,两个Collection实现了求同存异。在我重构的Cecil之后,编译后的Assemly大小减小了一半.
分享到:
相关推荐
消息传递范型与C/S范型双范型的主数据管理机制,陈晓云,邢乔金,本文针对主数据管理(MDM)存在的问题提出了一种基于消息传递机制范型与C/S范型双范型的主数据管理机制,当各个分系统的数据有所变化�
泛型详解,C#是强类型语言。作为一个程序员,当你使用这些语言时,总会期望编译器进行类型安全的检查。例如,如果你把对一个Book类型的引用转换成一个Vehicle型的引用,编译器将告诉你这样的cast是无效的。
《分布式系统原理与范型》是分布式系统中的经典教材,全书分为两部分:原理和范型。第一部分详细讨论了分布式系统的原理、概念和技术,其中包括通信、进程、命名、同步、一致性和复制、容错以及安全。第二部分给出了...
分布式系统原理与范型第二版课后习题答案 分布式系统原理与范型第二版课后习题答案 分布式系统原理与范型第二版课后习题答案 分布式系统原理与范型第二版课后习题答案
《分布式系统原理与范型》第一版.中文版,影印版。
分布式系统原理与范型.pdf tanenbaum的早期操作系统著作
范型程序设计与 STL.pdf,大小约 300K。
JAVA范型指南:讲述范型,范型通配符,范型方法,范型与久代码(无范型)的融合,范型的擦除与翻译等...
是《分布式系统原理与范型(第二版)》的答案 上回写错了,易造成误解! 本文档是第二版书的答案哦! 绝对是新的哦! 英文的!
生成静态页面及范型的代码例子
分布式系统原理与范型中文版 经典分布式理论书籍
分布式系统-原理与范型(第2版) 分布式系统-原理与范型(第2版) 分布式系统-原理与范型(第2版) 分布式系统-原理与范型(第2版)
这是分布式系统原理与范型的课件,比较全面系统的介绍分布式的知识。
第2~9章讨论的是分布式系统的的原理、概念和技术,包括通信、进程、命名、同步化、一致性和复制、容错性以及安全性等,而分布式应用的开发方法(即范型)在第10~13章中进行了讨论。但是,与前一版不同的是,我们...
详细介绍分布式原理和基本范型, 是一部不可多得的分布式经典书籍。
华中科技大学 分布式系统原理与范型_考试_2009_答案
分布式系统原理与范型(下).pdf 清华大学出版社,不错的分布式教材。
分布式系统原理与范型 2004 英文版答案