Não sei se existe algum 
design pattern que descreva esta técnica, mas eu defendo que o importante é saber utilizar as técnicas adequadas para cada problema, invés de saber os nomes dos padrões.
O problema é o seguinte:
- tenho uma função que me retorna um valor;
 
- condicionado a esse valor quero chamar funções diferentes;
 
A primeira abordagem que nos pode vir a cabeça é: "então vamos lá por uns if's que testam o valor do retorno da primeira função". Apesar de no exemplo seguinte a primeira função ( 
FuncaoComplexa() ) só retornar 2 valores diferentes, e isto seria simplesmente resolvido com um if, imagine-se que a função podia retornar 100 números diferentes.
 
private Dictionary connectorMapper; private delegate string DelegateFunction();
  public Ctor() {    connectorMapper = new Dictionary();    connectorMapper.Add(-1, new DelegateFunction(NegativeValue));    connectorMapper.Add(1, new DelegateFunction(PositiveValue)); }
  private string NegativeValue() {    return "Valor negativo"; }
  private string PositiveValue() {    return "Valor positivo"; }
  private void CalcFunction() {    //uma função qualquer que retorne 1 ou -1    int indexer = FuncaoComplexa()
     DelegateFunction func = connectorMapper[indexer];    Console.WriteLine( "Entrou na função com: " + func() ); } | 
  | 
Com esta técnica é criado um dicionário que como chave tem os possíveis valores retornados pela primeira função, e como valor tem as funções que se querem chamar consoante o valor retornado pela primeira função. Depois indexa-se ao dicionário com o retorno da primeira função e chama-se a função que o dicionário retorna.
 
Sem comentários:
Enviar um comentário