Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

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






    4 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Tiago F. Melo

É 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

 

[Comentário do autor]   Wesley Yamazack
Obrigado, Tiago.

     Os 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
 

Thiago Pedro
Wesley, só faltou declarar o Destroy.
Para liberar a classe da memória.


em 20/10/2010 19:57 - Responder

 

[Comentário do autor]   Wesley Yamazack
Olá Thiago Pedro,

Obrigado pela dica.
Fica ai para a galera a dica do Thiago.

Um abraço

Wesley


em 20/10/2010 20:04 - Responder
 



Autor
Wesley Yamazack

Graduado em Analise de Sistemas, no ramo de desenvolvimento há mais de 6 anos, onde atuei em empresas de diversos seguimentos como financeiro, comercial, estacionamento, etc. Atualmente encontro-me como analista desenvolvedor terceirizado da Marinha do Brasil, além de desenvolver projetos particular...


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível somente para quem possui Créditos DevMedia. (Ele não está associado a nenhuma publicação DevMedia).


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

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03