Mostrando postagens com marcador Padrões de Projeto. Mostrar todas as postagens
Mostrando postagens com marcador Padrões de Projeto. Mostrar todas as postagens

sábado, 6 de agosto de 2011

Strategy - Separando os comportamentos - Parte Final

No último artigo falei sobre o padrão de projeto Strategy e expus um diagrama de como utilizar o strategy para exportação de dados. Hoje vou mostrar como podemos implementar o padrão seguindo a modelagem do diagrama.

Primeiro, vamos a declaração da interface que define a API de exportação e o enumerator com os formatos de saída suportados.

type
  TExporterType = (etText, etCSV, etXML);

  IExporterStrategy = interface
  ['{AA69E6F1-389F-4DC3-AC14-7FA7A749B183}']
    function GetFileName: String;
    procedure SetFileName(const Value: String);

    property FileName: String read GetFileName write SetFileName;

    procedure ExportToFile(const Value: String);
  end;

quinta-feira, 4 de agosto de 2011

Strategy - Separando os comportamentos - Parte 1

O padrão de projeto Strategy define uma família de algoritmos, encapsula cada um e os torna intercambiáveis, traduzindo, definimos uma interface, criamos várias implementações para essa interface, e podemos mudar o comportamento do objeto trocando a implementação utilizada. Podemos inclusive fazer isso em runtime.

Vamos observar o diagrama abaixo.

quarta-feira, 3 de agosto de 2011

Singleton em Delphi utilzando interfaces

Olá, dando sequencia ao post anterior sobre Singleton, hoje irei mostrar uma implementação alternativa, e ao meu ver, mais elegante.

Nessa abordagem, o estado e/ou comportamento exposto pelo singleton deve ser declarado em uma interface.

type
  ISingleton = interface
  ['{F5B00272-536A-4C30-AB19-54496B106C7C}']
    procedure FacaAlgo;
  end;

Após a interface, vamos criar uma classe que seja responsável por implementá-la. O detalhe importante é que a classe fique abaixo da seção implementation, isso garante que ninguém fora dessa unit terá acesso a classe, tornado impossível criar uma nova instância da mesma.

terça-feira, 2 de agosto de 2011

Singleton em Delphi

O Singleton é um padrão de projeto utilizado para garantir que apenas uma única instância de determinada classe esteja disponível em todo o projeto, ou seja, ele garante que o objeto será instanciado apenas uma vez e será acessivel de forma global.

Isso é muito útil, por exemplo, quando lidamos com factory, pois a factory não precisa ser instanciada a todo momento. Outros exemplos são Pool de Conexões, Registry, Logs, ou recursos que sejam caros de instanciar a cada uso.