Это лучшее использование шаблона адаптера? - PullRequest
2 голосов
/ 13 ноября 2009

Будет ли лучше использовать шаблон адаптера, когда все, что вы пытаетесь адаптировать, это класс, который содержит поля, а не методы или функции?

Например, будет ли следующий способ лучше всего подойти к этому? Я использую C #, если это как-то влияет на ваши ответы.

    NewClass 
     private Guid _guidId;

    AdpaterClass : NewClass
     private  Guid _guidId;

    LegacyClass : LegacyBaseClass
     private  Guid  _guidId;
     private  String _stringDescription;
     private  DateTime _dateTimeValue;

Почему я это делаю?

Я пытаюсь привести LegacyClass и другой класс к той же базовой линии, чтобы я мог использовать один общий метод для сортировки / фильтрации по _guidId. Общий метод привел бы список Guid, проверил _GuidId и посмотрел, соответствует ли он, а затем выполнил какую-то функцию, основанную на этом. Моя цель не состоит в том, чтобы написать одну и ту же функцию сортировки / фильтрации более одного раза, поскольку они будут почти идентичны.

Спасибо за ваши предложения.

1 Ответ

9 голосов
/ 13 ноября 2009

Я думаю, что вы ищете что-то вроде следующего:

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> и т. Д. Если это так, это будет хорошим вариантом использования шаблона адаптера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...