Criação Estrutural Comportamental Classe Factory Method Adapter(class) Interpreter/template method Objeto Abstract Factory Adapter(object) Chain of Responsibylity Builder Bridge Command Prototype Composite Iterator Singleton Decorator Mediator Façade Memento Flyweight Observer Proxy State Strategy Visitor
Bom, passado a tabela da pra ter uma melhor ideia da divisão dos padrões e de suas aplicações. Como não tenho tempo de ler o livro todo, fui lendo sobre os padrões, achei interessante o Singleton,ele esta na pagina 130 do livro Padrões de Projeto.
Singleton é um Padrão de Projeto que nos garante que tenha somente uma instância de uma determinada classe, tendo um ponto de acesso global ao objeto na classe.O livro aborda como um exemplo de motivação uma impressora no sistema, onde temos muitas impressoras, mas teríamos que ter somente um spooler de impressão. Para obtermos somente uma instância da classe pode ser criado um método estático que chama o construtor da classe e verifica se não tem instância, caso não tenha retorna uma nova, caso tenha retorna a mesma. Um exemplo que achei em java:
public class MySingleton{ //variável estativa que ira contes a instancia do método private static MySingleton instance; //contrutor do método private MySingleton(){ } //metodo public estatico de acesso unico ao objeto public static MySingleton getInstance(){ if(instance==Null){ return new MySingleton } return instance; } }
Visto no exemplo acima, não teríamos como criar uma instância da classe sendo o construtor privado, porem o método publico da classe é estático e esse pode ser invocado sem a necessidade de uma instância, assim resolvendo nosso problema,que ao chamar o método estático automaticamente se cria uma instância da classe, ou então devolve a mesma que já exista.
Outro padrão que achei interessante é o padrão Adapter, esse padrão tem como objetivo adaptar a interface de uma classe para que seja utilizado por outra classe, um exemplo seria um toolkit, onde temos uma classe que precisa ser utilizada em nossos sistemas, porem para fazer o encaixe da classe precisamos de um adaptador, para que possamos utilizar a biblioteca, uma das vantegens de usar esse padrão é vincular o cliente a uma interface separado e não diretamente na classe que vai ter suar interface adaptada, um exemplo de código em Java:
public class TomadaDeDoisPinos{ public void ligarNaTomadaDeDoisPinos(){ System.out.println(ligado na tomada de dois pinos); } } public class TomadaDeTresPinos{ public void ligarNaTomadaDeTresPinos(){ System.out.println(ligado na tomada de tres pinos); } } public class AdapterTomada extends TomadaDeDoisPinos { private TomadaDeTresPinos tomadaDeTresPinos; public AdapterTomada(TomadaDeTresPinos tomadaDeTresPinos){ this.TomadaDeTresPinos = tomadaDeTresPinos; } public void LigarNaTomadaDeDoisPinos(){ tomadaDeTresPinos. LigarNaTomadaDeDoisPinos; } }
No exemplo de código acima temos uma classe AdapterTomada, quer ser ve como adaptador para interface das outras duas classes.Segue o exemplo do código em funcionamento:
public class Teste{ public static void main(String argumentos[]){ TomadaDeTresPinos tomadaTresPinos = new TomadaDeTresPinos; AdapterTomada adaptador = new AdapterTomada(tomadaTresPinos); adaptador. LigarNaTomadaDeDoisPinos(); } }
Referências :
http://www.devmedia.com.br/padrao-de-projeto-adapter-em-java/26467
http://pt.wikipedia.org/wiki/Singleton
Livro Padrões de Projeto Soluções Reutilizáveis de Software Orientado a Objetos
Bom , acho que vou concluir meu post por aqui, porque tem muitos padrões, tenho que ler com calma : ).
Autor:
Andrei Espelocim Garcia
Graduando em Tecnologia em Análise e Desenvolvimento de Sistemas- IFRS- CAMPUS Rio Grande
Nenhum comentário:
Postar um comentário