这是适配器模式的最佳用途吗?

时间:2009-11-13 20:13:11

标签: c# design-patterns

当你想要适应的所有东西都是一个持有字段而不是方法或函数的类时,使用适配器模式是否是最好的设计?

例如,以下是解决此问题的最佳方法吗?我正在使用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并查看它是否匹配,然后基于此执行某些功能。我的目标不是多次编写相同的排序/过滤功能,因为它们几乎完全相同。

感谢您的建议。

1 个答案:

答案 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>等。如果是这样,这将很好地利用适配器模式。