假设我们有两组类,一组包含Files(即File1,File2 ......),第二组叫Blocks(Block1,Block2,...)。文件可以包含不同数量的块属性:
class File1
{
public Block1 Block1Prop {get;set;}
public Block8 Block8Prop {get;set;}
}
class File2
{
public Block1 Block1Prop {get;set;}
public Block9 Block9Prop {get;set;}
}
class File1
{
public Block9 Block9Prop {get;set;}
public Block7 Block7Prop {get;set;}
public Block4 Block4Prop {get;set;}
public Block3 Block3Prop {get;set;}
}
class File1
{
public Block8 Block8Prop {get;set;}
}
. . .
和块只是单独的类:
class Block1
{
public string SomeProperty {get;set}
}
class Block2
{
public string SomeProperty {get;set}
}
. . .
因此,为了不反复写入相同的块属性(在FileX中),我将所有文件中出现的块分离为基本抽象类。对于其余的块,我可以为每个块创建一个接口,然后在文件中实现它(但这不会减少代码重复)。
interface IBlock1
{
Block1 Block1Prop {get;set;}
}
interface IBlock8
{
Block8 Block8Prop {get;set;}
}
class File1: IBlock1, IBlock8
{
public Block1 Block1Prop {get;set;}
public Block8 Block8Prop {get;set;}
}
那么,是否有任何简单的方法(一些已知的设计模式)来避免代码重复,或者应该以这种方式编写这种类型的层次结构?