具有多个方法的类的设计模式

时间:2017-07-18 11:02:22

标签: c# oop methods solid-principles

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

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

}

如果我的班级有多个方法,那么它是否遵循SOLID和

另一种方式是,如果所有方法都是私有的,所以我尽可能少地暴露(When should methods be made private?),但这是一个好的设计模式还是我应该把方法分成不同的类?

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}
}

1 个答案:

答案 0 :(得分:2)

三种方法有关吗?它们是彼此的替代品吗?它们是否独立变化?

如果每种方法代表实现相同目标的不同方式并且可以独立使用,那么使用可以将它们分开。假设您正在从谷歌或亚马逊获得天气预报,您可以这样做:

interface IWeatherProvider 
{ 
   //SomeReturnType Get();
}

class AmazonWeatherProvider : IWeatherProvider  
{ 
    // Implementation
}

class GoogleWeatherProvider : IWeatherProvider  
{ 
    // Implementation
}

在上面的例子中,每个类代表了一种不同的方式来实现同样的责任。

但是如果你有两种方法:GetWeeklyForecastGetDailyForecast。您可以在同一个类(或接口)中使用这两个。通常 违反SRP,他们都承担相同的责任(获取天气预报)

如果方法完全不相关,并且可能因不同原因而更改或由不同客户使用,您也可以拆分为不同的类。

请注意您如何考虑公共/私人方法。您可以根据需要公开尽可能多的公共方法(这些是您与使用API​​的人共享的合同)。如果更改私有方法的参数类型,则不会发生重大更改。但是,如果您更改公共方法的参数类型,则会发生重大变化!您的所有客户现在都需要更改其代码!