Вопрос больше о терминах. Хочется понять, как можно данное решение объяснять в общем случае.
Решение выглядит просто (C#):
static class FuncProvider {
public Func<int, int, int> Sum = (a,b) => a+b; // delegate or pointer to function
}
class SomeObject {
public void Method(int a, int b)
{
var r = FuncProvider.Sum(a, b);
}
}
// standard code
var obj = new SomeObject();
obj.Method(1,2);
// code with overriden Sum function
FuncProvider.Sum = (a,b) => {
if (/*some condition*/) return a+b;
return 0;
};
var obj = new SomeObject();
obj.Method(1,2);
Код показывает только саму суть: возможность подменить логику без изменения основного функционала. Дилемма состоит в том, чтобы подобрать наиболее адекватное описание данного решения, чтобы не пускаться в описание деталей типа: "надо сделать статик, там сделать функтор, чтобы вытащить метод и бла-бла-бла".
Что это Strategy или Servant? Или другой какой-то? Поделитесь мыслями, плиз?