Introdução: Singleton - Design Pattern Delphi - Parte 1
Veja nesta Quick, um exemplo prático de Singleton em Delphi
Olá galera, nesta Quick Tips, irei mostrar um dos padrões de projetos mais utilizados, hoje em dia no desenvolvimento de Software, o padrão Singleton.
Com o Singleton, podemos ter a certeza de que só irá existir um único objeto instanciado para determinada classe, um exemplo, seria o usuário conectado ao sistema, ou até mesmo a conexão direta ao banco de dados.
Vou criar uma unit, seu nome será uUsuario, e nela implementaremos uma série de configurações dentro de uma classe chamada TUsuario. Declarações e posteriormente as implementações.
Ao criar uma unit, vamos declarar a mesma da seguinte forma, e salvar como uUsuario.
unit uUsuario;
interface
uses
uDM, DB, SqlExpr, SysUtils, Dialogs, IdHashMessageDigest;
type
TUsuario = class
Private
{ Objetivo : Podemos notar que existem fields/variáveis Class Var, estes são necessários que configuremos desta forma, para podermos armazenar o conteúdo do usuário ao ser localizado na base de dados, quando usamos um método de Class, para acessarmos Fields dentro dele, só podemos acessar quando estes são de Class também }
class var FID: Integer;
class var FSenha: String;
class var FNivel: Integer;
class var FUsuario: String;
class var FInstance: TUsuario;
constructor CreatePrivate;
constructor Create;
{ private declarations }
protected
{ protected declarations }
public
{ public declarations }
{ Objetivo : Efetuar o login a uma base de dados passando usuário e senha, além da conexão ao qual se deseja conectar }
class function Login(AUsuario, ASenha: String;xConexao: TSQLConnection): Boolean;
{ Objetivo : alterar a senha de um usuário logado por exemplo }
class function ChangePassword(strOldPassword, trNewPassword,strCheckPassword:
String; xConexao : TSQLConnection):Boolean;
{ Objetivo : Obter a instancia caso exista, ou criar a mesma, apenas uma única vez }
class function GetInstance: TUsuario;
{ Objetivo : Função criada em outro artigo, serve para podermos criptografar uma string utilizando Hash MD5, observe que demos uses em IdHashMessageDigest }
class function Criptografar(const Value: string): string; static;
{ Objetivo : Função para retornar o nome do usuário logado }
class function GetUsuarioLogado: String;
{ Objetivo : Propriedades de configuração da minha tabela de usuário, configure e altere de acordo com a sua necessidade }
class property ID: Integer read FID;
class property Usuario: String read FUsuario;
class property Senha: String read FSenha;
class property Nivel: Integer read FNivel;
end;
Fico por aqui ate à próxima Quick Tips, onde veremos as implementações dos métodos declarados neste artigo.
Um
abraço
Wesley Y
wyamazack@rwsolution.com.br


É isso ai Wesley, sigleton no deplhi confesso que nunca havia utilizado, antes estava utilizando apenas metodos static, é claro que o efeito a nível de usuário e usabilidade do software é o mesmo para o usuário final, porém para nós desenvolvedores pequenos detalhes fazem toda diferença, e manter um padrão durante a fase de implementação e manutenção não é nada mas é 100% hehehe... O enriquecimento do produto e os padrões adquiridos quando lançamos mão do uso de Patterns não só enriquicem o produto final(software), mas também nós como profissionais evoluimos muito quando lançamos mão do uso de patterns, apartir de agora conexões em OO é SINGLETON...
em 31/8/2010 10:18 - Responder

Wesley YamazackOs padrões para muitos que acham perda de tempo, da um trabalho fazer no início mas depois de pronto, você não se preocupada mais em desenvolver, basta reutilizar, durante os outros softwares.
Reaproveitamento é a alma do negócio, costumo dizer para meus alunos, o primeiro software você sai perdendo, mas o de mais é só lucro, depois de pronto.
Obrigado pelas palavras.
Um abraço
Wesley Y
em 31/8/2010 10:25 - Responder


Para liberar a classe da memória.
em 20/10/2010 19:57 - Responder

Wesley YamazackObrigado pela dica.
Fica ai para a galera a dica do Thiago.
Um abraço
Wesley
em 20/10/2010 20:04 - Responder
Space do autor

Estudo comparativo entre banco de dados IBM Informix e Microsoft SQL

0
0
Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!