Recentemente deparei-me com o termo "Pattern Happy". Imaginem alguém que aplica padrões a todos os problemas que encontra, esse é um indivíduo a sofrer do que podemos chamar de "padronite"! O padronítico é alguém que tenta alimentar o seu ego de tal forma, querendo autotitular-se de Pattern King ou algo parecido, que aplica padrões em tudo, mesmo nos casos mais bizarros...
Encontrei um texto em Java que é uma verdadeira delícia e ao mesmo tempo uma caricatura que exemplifica bem o termo. Tomei a liberdade de pegar nesse código e transformá-lo em C#. (J#, o que é isso?)
Faço-vos o seguinte desafio, analisem o código e tentem perceber o que faz e para que serve antes de ver o final.
3: interface MessageStrategy
8: abstract class AbstractStrategyFactory
10: public abstract MessageStrategy createStrategy(MessageText message);
13: sealed class MessageText
16: public object getPayLoad()
20: public void configure (object obj)
24: public void send (MessageStrategy message)
26: message.sendMessage() ;
30: class DefaultFactory : AbstractStrategyFactory
32: private DefaultFactory()
35: static DefaultFactory instance;
36: public static AbstractStrategyFactory getInstance()
38: if (instance == null)
39: instance = new DefaultFactory();
42: public override MessageStrategy createStrategy(MessageText mensagem)
44: return new ConcreteMessage(mensagem);
48: class ConcreteMessage : MessageStrategy
50: private MessageText message;
51: public ConcreteMessage(MessageText mt)
55: public void sendMessage()
57: object obj = message.getPayLoad();
58: Console.WriteLine(obj.ToString() );
60: }
Ainda cá estão? um pouco confusos..., não...?
Bem já falta pouco...
62: public class EntryPoint
64: public static void Main ()
66: MessageText mt=new MessageText() ;
67: mt.configure(mt.ToString());
68: AbstractStrategyFactory factory = DefaultFactory.getInstance();
69: MessageStrategy Strategy = factory.createStrategy(mt);
Descobriram?
Que tal substituirem a linha 67:
mt.configure(mt.ToString());
por
mt.configure("Hello World! Yeap, it's me! Plain Good Old - Hello World!");
ou
mt.configure("Este é apenas mais um dos meus programas a sofrer um caso agudo de padronite!"); // :)
Há casos graves de padronite, a necessitar de ajuda associativa dos padroníticos anónimos. Ou vendo as coisas de forma positiva, tal como customo dizer a um colega e ele a mim: aqui está uma boa oportunidade de negócio para fazer um ofuscator!
Posted
30-8-2005 0:47
por
Rui Claro