Re: К какому паттерну ближе решение (статик делегат используется в других класса
От: · Великобритания  
Дата: 07.01.16 13:10
Оценка:
Здравствуйте, another_coder, Вы писали:

_>Код показывает только саму суть: возможность подменить логику без изменения основного функционала. Дилемма состоит в том, чтобы подобрать наиболее адекватное описание данного решения, чтобы не пускаться в описание деталей типа: "надо сделать статик, там сделать функтор, чтобы вытащить метод и бла-бла-бла".

_>Что это Strategy или Servant? Или другой какой-то? Поделитесь мыслями, плиз?
Это тупо глобальная статическая переменная.
Почему бы не сделать явную передачу зависимости?
Насчёт синтаксиса не уверен, т.к. плохо знаю c#
class SomeObject
{
  private const Func<int, int, int> Sum;
  public SomeObject(Func<int, int, int> f) {this.Sum=f;}
}
// standard code 
var obj = new SomeObject(FuncProvider.Sum);
obj.Method(1,2);

// или так, если SomeObject иммутабелен
static class SomeObjectDefaults
{
   public const SomeObject DEFAULT = new SomeObject((a, b) => a+b);
}
...
var obj = SomeObjectDefaults.DEFAULT;
obj.Method(1,2);


// code with overriden Sum function
var obj = new SomeObject((a,b) => {
        if (/*some condition*/) return a+b;
        return 0;
    });
obj.Method(1,2);
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.