segunda-feira, 30 de setembro de 2013

Padrões de Projeto

Bom, meu post vai ser sobre o livro Padrões de Projeto, dando uma breve explicação do que tem no livro: O livro Padrões de Projeto reúne um total de 23 padrões, que baseado em problemas nos fornece soluções que podemos utilizar em um projeto de software. O livro separa os padrões em 3 critérios: criação, estrutural e comportamental. Cada critério tem seus padrões relacionados. Os padrões também se aplicam quanto as classes e quanto aos objetos. Logo abaixo uma tabela que tem logo no inicio do livro:
 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