具有多种方法的 class 的设计模式

Design pattern for class with more than one methods

我正在构建一个调用各种 API 的应用程序,作为 SOLID 原则的新手以及 class 应该如何承担单一职责,我希望在设计我的 class 时考虑到 SOLID ,

Internal class API_Caller
{
  public static getInfor1()
  {
    // do something in here
  }
  public static getInfo2()
  {// do something }
  public static getInfo3()
  {// do something}

}

如果我的 class 有不止一种方法,它是否遵循 SOLID 并且

另一种方法是,如果所有方法都是私有的,那么我会尽可能少地公开 (When should methods be made private?) 但这是一个好的设计模式还是我应该将这些方法分成不同的 classes ??

internal class API_Caller
{
    public Static CALL_APIs (API_Name)
    {
        switch (API_Name)
        {
            case "getinfo1":
              getInfor1();
              break;
            case "getinfo2":
              getinfo2();
              break;
        }
    }
    private static getInfor1(){// do something}
    private static getInfo2(){// do something}
    private static getInfo3(){// do something}
}

这三个方法有关系吗?他们是彼此的替代品吗?它们独立变化吗?

如果每种方法代表实现同一目标的不同方式并且可以独立使用,则可以将它们分开使用。假设您要从 Google 或亚马逊获取天气预报,您可以这样做:

interface IWeatherProvider 
{ 
   //SomeReturnType Get();
}

class AmazonWeatherProvider : IWeatherProvider  
{ 
    // Implementation
}

class GoogleWeatherProvider : IWeatherProvider  
{ 
    // Implementation
}

在上面的示例中,每个 class 代表实现相同职责的不同方式。

但是如果你有 2 种方法:GetWeeklyForecastGetDailyForecast。您可以将这两个放在同一个 class (或界面)中。这 通常 并没有违反 SRP,他们都负有相同的责任(获取天气预报)

您也可以拆分成不同的 class 方法,以防这些方法完全不相关并且可能会因不同原因或被不同客户使用而改变。


注意您对 public / 私有方法的看法。您可以根据需要公开 多个 public 方法(这些是您与使用 API 的任何人共享的合同)。如果更改私有方法的参数类型,则不会产生重大更改。但是,如果您更改 public 方法的参数类型,就会发生重大变化!您所有的客户现在都需要更改他们的代码!