Posts Tagged ‘Pattern’
Semana da Computação Sociesc 2010
Na semana do dia 24 de agosto acontecerá na Sociesc da Marquês de Olinda um evento de computação que terá palestras, oficinas e minicursos relacionados a computação. Veja lista completa aqui
Eu estarei presente no evento assistindo as palestras, ministrando um minicurso e uma oficina.
O Minicurso será nos dias 24 e 25 de agosto pelo Microsoft Inovation Center (MIC), sendo seu responsável o Sr. Rodrigo Curvêllo. Este terá como foco as tecnologias Microsoft e conterá com 4 palestrantes e toda equipe comprometida do MIC. Os assuntos tratados serão:
- Introdução ao .Net Framework e ASP.NET (1h) -> Juliano Rinaldi da empresa Opentech
- Sql-Server 2008 (30min) -> Gustavo Renato Meyer da empresa Sonda Procwork
- SilverLight (30 min) -> Fernando Magno da empresa Easy Communication & Technology
- Domain Driven Design (1h) -> Lorival Smolski Chapuis da empresa Conceito W Sistemas
Cada um destes assuntos será tratado por um palestrante diferente, como vocês puderam perceber acima, sendo eu quem tratará de Domain Driven Desing do Eric Evans. Após o dia 25 estarei postando a apresentação aqui no blog e explicando um pouco mais sobre DDD.
Cada dia comportará 20 vagas totalizando 40, mas infelizmente ou felizmente, dependendo do ponto de vista, todas já estão lotadas.
A Oficina será uma sessão Dojo do JoinvilleDojo, ocorrendo no dia 25 de agosto durante toda a noite. Eu terei que me ausentar durante 1h para estar no mini-curso de DDD, porém Guilherme Oenning estará toda a noite guiando o Dojo. A linguagem a ser utilizada será C# e trabalharemos 2 katas, o restante só indo assistir para saber… hehehehe
A notícia boa é que ainda tem 5 vagas. Acesse o site da Sociesc e faça sua inscrição para o evento. É necessário criar um usuário para se inscrever.
Vamos participar, aprender e compartilhar. Encontro vocês lá.
Abrs a todos.
“Nada grandioso jamais foi criado sem entusiasmo”. Ralph Waldo Emerson
Padrão de projeto – parte 4: Facade
Design Pattern: Facade
Definição segundo GoF: Oferecer uma interface única para um conjunto de interfaces de um subsistema. Façade define uma interface de nível mais elevado que torna o subsistema mais fácil de usar.
Exemplo baseado no mundo real: A sala de estar…. ah! sala de estar, quanta beleza existe em uma boa e tecnológica sala de estar… quantos de nós já teve a maravilhosa idéia de montar seu home theater em sua sala de estar, tornando-a um fantástico embolado de fios e aparelhos eletro-eletrônicos? Pois bem, nosso objetivo aqui é criar uma sala simples e bacana tecnológicamente. Vamos precisar de:
- Uma TV 32 polegadas LCD (poderia ser LED eu sei, mas vamos pelo mais barato);
- Um DVD Player conectado a nossa TV;
- Um Aparalho de som 7.1 para usar como rádio/CD/MP3 para conectar com nosso DVD Player;
- Um PlayStation3 conectado a TV;
- Uma luz ambiente regulável.
Poderia ser mais coisas, mas vamos começar pelo simples. Agora você sentou no sofá e pegou na mão os controles:
- da TV;
- do DVD Playser;
- do aparalhode som;
- da luz ambiente.
Já imaginou o trabalho que vai ter para usar tudo isso integrado? E se tivessemos apenas um controle que reuni-se as principais funcionalidades destes 4 e ainda conecta-se nosso Play 3 junto? Não seria uma maravilha? Pois bem, este é o objetivo do Façade ou fachada: servir como uma interface única para um conjunto de interfaces.
Aplicações:
- Sempre que for desejável criar uma interface para um conjunto de objetos com o objetivo de facilitar o uso da aplicação;
- Reduzir a complexidade do relacionamento entre uma classe relativa ao cliente e as demais classes utilitárias [Junior, 2004];
- Redução de dependência entre o cliente e as classes existentes nos subsistemas, ocasionando a redução da coesão do sistema.
Vantagens:
- Permite que objetos individuais cuidem de uma única tarefa, deixando que a fachada se encarregue de divulgar as suas operações;
- Reduz dependências de compilação, possivelmente complexas ou circulares;
- Não evita que aplicações possam acessar diretamente as subclasses do sistema, se assim o desejarem [Junior, 2004];
Desvantagens:
- Necessário saber a classe concreta do criador de instâncias;
Observações:
- Fachadas são normalmente implementadas com singleton;
- Uma fachada apenas com métodos estáticos são chamadas de Utility.
Diagrama de classe:
Implementação em C#:
public class Client
{
public void Cooking() //-- Quando o cliente for cozinhar algo para comer...
{
//-- Código especialista
HomeTheaterFacade homeTheater = new HomeTheaterFacade();
homeTheater.WatchMovie();
//-- Código especialista
}
//-- Outros métodos úteis aqui
}
A codificação inteira deste post, juntamente com exemplos será feita em outro post.
Abrs a todos e até a próxima.
“Quando vemos um gigante, temos primeiro de examinar a posição do sol e observar para termos certeza de que não é a sombra de um pigmeu.” Friedrich Novalis
