O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

padrao de projeto0

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Patterns
Patterns
Carregando em…3
×

Confira estes a seguir

1 de 5 Anúncio

Mais Conteúdo rRelacionado

Semelhante a padrao de projeto0 (20)

Anúncio

Mais recentes (20)

padrao de projeto0

  1. 1. Singleton | 99 Lista de controle 1. Definir um privado estático atributo na classe "única instância".1. Definir um privado estático atributo na classe "única instância".1. Definir um privado estático atributo na classe "única instância".1. Definir um privado estático atributo na classe "única instância". 2. Definir um público estático função de acesso na classe.2. Definir um público estático função de acesso na classe.2. Definir um público estático função de acesso na classe.2. Definir um público estático função de acesso na classe. 3. Fazer "inicialização lenta" (criação na primeira utilização) no acessor3. Fazer "inicialização lenta" (criação na primeira utilização) no acessor função. 4. Definir todos os construtores para ser protegido ou privado.4. Definir todos os construtores para ser protegido ou privado.4. Definir todos os construtores para ser protegido ou privado.4. Definir todos os construtores para ser protegido ou privado.4. Definir todos os construtores para ser protegido ou privado. 5. Os clientes só podem utilizar a função de assessor para manipular o5. Os clientes só podem utilizar a função de assessor para manipular o Singleton. Regras de ouro Abstract Factory, Builder, e Prototype pode usar Singleton na sua implementação. objetos de fachada são frequentemente Singletons porque apenas um objeto Fachada é necessária. objetos de estado são frequentemente Singletons. A vantagem de Singleton sobre variáveis ​​globais é que você tem certeza absoluta do número de casos em que você usar Singleton, e, você pode mudar sua mente e gerenciar qualquer número de instâncias. O padrão de design Singleton é um dos padrões mais usados ​​inadequadamente. Singletons se destinam a ser usadas quando uma classe deve ter exatamente um exemplo, nem mais, nem menos. Designers utilizam frequentemente Singletons em uma tentativa equivocada de substituir variáveis ​​globais. A Singleton é, para os efeitos, uma variável global. Será que o Singleton não acabar com o global, ele simplesmente renomeia. Quando é Singleton desnecessário? Resposta curta - a maior parte do tempo.Quando é Singleton desnecessário? Resposta curta - a maior parte do tempo. Resposta longa: quando é mais simples para passar um recurso objeto como uma referência para os objetos que precisam, em vez de objetos deixando acessar o recurso globalmente. O problema real com Singletons é que eles dão-lhe uma boa desculpa como não pensar cuidadosamente sobre a visibilidade apropriada de um
  2. 2. 100 | coisa única objeto. Encontrar o equilíbrio certo de exposição e proteção para um objeto é fundamental para manter a flexibilidade. O nosso grupo tinha um mau hábito de usar dados globais, então eu fiz um grupo de estudo sobre Singleton. A próxima coisa que eu sei Singletons apareceu em todos os lugares e nenhum dos problemas relacionados com dados globais foi embora. A resposta à pergunta de dados global não é " Torná-lo um Singleton".A resposta à pergunta de dados global não é " Torná-lo um Singleton". A resposta é, " Por que diabos você está usando dados global?" Alterar o nome nãoA resposta é, " Por que diabos você está usando dados global?" Alterar o nome nãoA resposta é, " Por que diabos você está usando dados global?" Alterar o nome não muda o problema. Na verdade, ele pode torná-lo pior, porque lhe dá a oportunidade de dizer, " Bem, eu não vouNa verdade, ele pode torná-lo pior, porque lhe dá a oportunidade de dizer, " Bem, eu não vou fazer isso, eu estou fazendo isso" - mesmo que isso e que são a mesma coisa.fazer isso, eu estou fazendo isso" - mesmo que isso e que são a mesma coisa.
  3. 3. Estado | 101 Estado Intenção • Permitir que um objecto para alterar o seu comportamento quando as suas mudanças de estado interno. O objeto aparecerá para mudar sua classe. • Uma máquina de estado orientado para o objecto • invólucro + wrappee polimórfica + colaboração Problema O comportamento de um objeto monolítico é uma função do seu estado, e deve mudar seu comportamento em tempo de execução, dependendo esse estado. Ou, um pedido é characterixed por grandes e numerosos declarações de caso que o fluxo de vector de controlo com base no estado do pedido. Discussão O padrão de Estado é uma solução para o problema de como tornar o comportamento dependem do estado. • Definir uma classe "contexto" para apresentar uma interface única para o mundo exterior. • Definir uma classe base abstrata Estado. • Representar os diferentes "estados" da máquina estatal como classes derivadas da classe base Estado. • Definir o comportamento específico do estado nas classes do Estado derivada apropriadas. • Manter um ponteiro para o "estado" atual na classe "contexto". • Para alterar o estado da máquina de estado, alterar o ponteiro atual "estado". O padrão de Estado não especifica onde as transições de estado será definido. As opções são duas: o "contexto" objeto, ou cada classe derivada Estado individual. A vantagem da segunda opção é a facilidade de adicionar novas classes de Estado derivada. A desvantagem é cada classe Estado derivada tem conhecimento de (acoplamento a) seus irmãos, que introduz as dependências entre as subclasses.
  4. 4. A abordagem baseada em tabelas para projetar máquinas de estados finitos faz um bom trabalho de especificar transições de estado, mas é difícil para adicionar ações para acompanhar as transições de estado. A abordagem baseada em padrões usa código (em vez de estruturas de dados) para especificar transições de estado, mas ele faz um bom trabalho de ações de transição de estado que acomodam. Estrutura A interface do máquina de estado é encapsulado na classe "wrapper". A interface do hierarquia wrappee espelha a interface do invólucro com a exceção de um parâmetro adicional. O parâmetro extra permite que classes wrappee derivado de chamar de volta para a classe wrapper conforme necessário. Complexidade que de outro modo arrastar para baixo a classe de invólucro é nitidamente compartimentado e encapsulado numa hierarquia polimórfica para que os delegados invólucro objeto. Exemplo O padrão Estado permite que um objeto para mudar seu comportamento quando seu estado interno muda. Este padrão pode ser observado em uma máquina de venda automática. Máquinas de venda automática tem estados com base no inventário, a quantidade de moeda 102 | Estado
  5. 5. depositada, a capacidade de fazer a mudança, o item selecionado, etc. Quando a moeda é depositado e uma seleção é feita, uma máquina de venda automática será ou entregar um produto e nenhuma mudança, entregar um produto e mudança, entregar nenhum produto devido à moeda insuficiente sobre depósito, ou entregar nenhum produto devido ao esgotamento de estoques. Lista de controle 1. Identificar uma classe existente ou criar uma nova classe, que servirá como a "máquina de estado" do ponto de vista do cliente. Essa classe é a classe "wrapper". 2. Crie uma classe base Estado que replica os métodos da interface de máquina de estado. Cada método recebe um parâmetro adicional: uma instância da classe wrapper. A classe base Estado especifica qualquer comportamento útil "default". 3. Crie uma classe Estado derivada para cada estado de domínio. Estas classes derivadas única substituir os métodos que eles precisam para substituir. 4. A classe wrapper mantém uma "corrente" objeto de estado. 5. Todos os pedidos de clientes para a classe de mensagens publicitárias são simplesmente delegado ao objeto estado atual, e o objeto de invólucro de isto ponteiro é passado.estado atual, e o objeto de invólucro de isto ponteiro é passado.estado atual, e o objeto de invólucro de isto ponteiro é passado. 6. Os métodos estaduais alterar o estado "corrente" no objeto wrapper conforme apropriado. Estado | 103

×