当你想要适应的所有东西都是一个持有字段而不是方法或函数的类时,使用适配器模式是否是最好的设计?
例如,以下是解决此问题的最佳方法吗?我正在使用C#,如果这会对你的答案产生任何影响。
NewClass
private Guid _guidId;
AdpaterClass : NewClass
private Guid _guidId;
LegacyClass : LegacyBaseClass
private Guid _guidId;
private String _stringDescription;
private DateTime _dateTimeValue;
我为什么要这样做?
我正在尝试将LegacyClass和另一个Class降低到相同的基线,以便我可以使用单个常用方法对_guidId进行排序/过滤。常用方法将引入一个Guid列表,检查_GuidId并查看它是否匹配,然后基于此执行某些功能。我的目标不是多次编写相同的排序/过滤功能,因为它们几乎完全相同。
感谢您的建议。
答案 0 :(得分:9)
我认为您正在寻找的是以下内容:
interface ICanHazGuidId {
Guid GuidId { get; }
}
class NewClass : ICanHazGuidId {
public Guid GuidId { get; private set; }
// etc.
}
class AdapterClass : ICanHazGuidId {
private LegacyClass legacy;
public Guid GuidId {
get {
// obtain and return legacy._guidId;
}
}
// constructor eating instance of LegacyClass etc.
}
然后只需实现IComparer<ICanHazGuidId>
等。如果是这样,这将很好地利用适配器模式。