Пожалуйста, взгляните на следующий фрагмент кода:
public interface ICultureService
{
List<Culture> GetCultures();
bool IsCultureSupported(Culture culture);
Culture GetFallbackCulture();
}
Мы обнаружили, что большинство потребителей сначала вызывают IsCultureSupported, чтобы проверить, поддерживается ли их язык и региональные параметры. И если культура не поддерживается, они вызывают GetFallbackCulture():
public CallingMethod()
{
if(!cultureManager.IsCultureSupported(currentCulture))
{
currentCulture=cultureManager.GetFallbackCulture();
}
.
.
.
}
В соответствии с принципом единой ответственности (и другими правилами ООП) можно ли ввести функцию (в ICultureService и ее реализацию), например:
function GetFallbackCultureIfInvalid(Culture culture)
{
if(this.IsCultureSupported(culture)
{
return this.FallbackCulture();
}
}
ICultureService
, поэтому SRP говорит мне, что занимается всем культурным управлением (и ничем другим). Это не запрещает мне добавлять методы. Это только запрещает решать вопросы, не связанные напрямую. - person maaartinus   schedule 17.02.2017