我可以使用适配器设计模式来简化接口列表吗?

时间:2018-05-04 10:54:27

标签: c# .net design-patterns interface architecture

我有一个应用程序,它使用两个不同的接口,每个接口定义一个方法。方法名称和返回的结果相同,但输入参数不同。

示例:

//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 :(得分:0)

如果这是你需要的所有功能,而不是创建两个不同的接口,我会创建一个接口“ProbabilityCalculator”并重载CalculateProbabilities方法。

interface IProbabilityCalculator
{
    IEnumerable<ProbabilityScore> CalculateProbabilities(string name);
    IEnumerable<ProbabilityScore> CalculateProbabilities(AccessAddress accessAddress, AddressKey targetKey);
}