К какому паттерну ближе решение (статик делегат используется в других классах)?
От: another_coder Россия  
Дата: 07.01.16 12:06
Оценка:
Вопрос больше о терминах. Хочется понять, как можно данное решение объяснять в общем случае.
Решение выглядит просто (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? Или другой какой-то? Поделитесь мыслями, плиз?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.