我正在构建一个调用各种API的应用程序,作为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}
}
答案 0 :(得分:2)
三种方法有关吗?它们是彼此的替代品吗?它们是否独立变化?
如果每种方法代表实现相同目标的不同方式并且可以独立使用,那么使用可以将它们分开。假设您正在从谷歌或亚马逊获得天气预报,您可以这样做:
interface IWeatherProvider
{
//SomeReturnType Get();
}
class AmazonWeatherProvider : IWeatherProvider
{
// Implementation
}
class GoogleWeatherProvider : IWeatherProvider
{
// Implementation
}
在上面的例子中,每个类代表了一种不同的方式来实现同样的责任。
但是如果你有两种方法:GetWeeklyForecast
和GetDailyForecast
。您可以在同一个类(或接口)中使用这两个。通常 违反SRP,他们都承担相同的责任(获取天气预报)
如果方法完全不相关,并且可能因不同原因而更改或由不同客户使用,您也可以拆分为不同的类。
请注意您如何考虑公共/私人方法。您可以根据需要公开尽可能多的公共方法(这些是您与使用API的人共享的合同)。如果更改私有方法的参数类型,则不会发生重大更改。但是,如果您更改公共方法的参数类型,则会发生重大变化!您的所有客户现在都需要更改其代码!