Можно ли использовать шаблон проектирования адаптера для упрощения списков интерфейсов? - PullRequest
0 голосов
/ 04 мая 2018

У меня есть приложение, которое использует два разных интерфейса, каждый из которых определяет один метод. Имя метода и возвращаемый результат совпадают, но входные параметры отличаются.

Примеры:

//Interface A
public interface IPropertyTypifier
{
    IEnumerable<ProbabilityScore> CalculateProbabilities(
        AccessAddress accessAddress,
        AddressKey targetKey);
}

//Interface B
public interface INameTypifier
{
    IEnumerable<ProbabilityScore> CalculateProbabilities(string name);
}

У меня есть несколько классов, которые реализуют этот интерфейс, которые затем добавляются в другой класс, который содержит их список как таковой:

public class TypificationService
{
    public IEnumerable<IPropertyTypifier> PropertyTypifiers { get; set; }
    public IEnumerable<INameTypifier> NameTypifiers { get; set; }

    TypificationResult Typify(AccessAddress accessAddress, AddressKey targetKey, string name)
    {
        // For each property typifier get result here

        // For each name typifier get result here

        // Return result
    }
}

Имеет ли здесь смысл использовать Adapter вместо создания интерфейса, который позволяет мне вести единый список типизаторов? Или этот дизайн уже несовершенен?

1 Ответ

0 голосов
/ 04 мая 2018

Если это все, что вам нужно, вместо создания двух разных интерфейсов, я бы создал интерфейс "ProbabilityCalculator" и перегрузил метод CalculateProbabilities.

interface IProbabilityCalculator
{
    IEnumerable<ProbabilityScore> CalculateProbabilities(string name);
    IEnumerable<ProbabilityScore> CalculateProbabilities(AccessAddress accessAddress, AddressKey targetKey);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...