Patterns :: Undefobject.

Uma versão do padrão de objeto indefinido (objeto NULL)
Baixe Agora

Patterns :: Undefobject. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • Perl Artistic License
  • Preço:
  • FREE
  • Nome do editor:
  • John Napiorkowski
  • Site do editor:
  • http://search.cpan.org/~jjnapiork/

Patterns :: Undefobject. Tag


Patterns :: Undefobject. Descrição

Padrões :: Undefobject é uma versão do padrão de objeto indefinido (Null Object ).setima quando você está chamando métodos em um objeto você não pode ter certeza de que uma determinada cadeia de chamadas será válida. Por exemplo, se você estiver usando algo como DBIX :: Classe, você pode começar, descobrindo se um determinado usuário existe em um banco de dados e seguindo os relacionamentos desse usuário para um determinado objetivo: meu $ Primary = $ Schema -> ResultSet ('user ') -> Localizar (100) -> Telefone_numbers -> Primário; No entanto, esta cadeia de chamadas morrerá duro durante a invocação dinâmica, caso a chamada do método encontre (100) não conseguir encontrar um usuário. Essa falha retornaria um valor de Redef e, em seguida, um método posterior "não pode chamar o método" Telefone_numbers "em um valor indefinido. Isso geralmente leva a escrever um monte de código defensivo: meu $ primário; se (meu usuário $ user = $ > ResultSet ('User')) {$ Primary = $ User -> Telefone_numbers -> Primário;} else {$ Primary = "Número desconhecido";} Não é verdadeiramente seguro, você precisará escrever um código defensivo O caminho para a cadeia caso as relações não forem necessárias. Acredito que esse tipo de código defensivo de boilerplate é demorado e distraindo para o leitor. Sua verbosidade atrai a atenção do propósito principal do código. Além disso, parece um Um cheiro de código para um bom design orientado a objetos. Patterns :: Undefobject oferece uma abordagem possível para lidar com esse problema. Esta classe definiu um método de fábrica chamado "talvez" que aceita um argumento e retorna esse argumento, caso contrário, Retorna uma instância de padrões :: UndefObject, que define o AutoLoa D tal que não importa qual método seja chamado, sempre se retorna. Isso permite chamar qualquer duração arbitrária das cadeias de métodos desse objeto inicial, sem causar uma exceção para interromper o seu código. Este objeto sobrecarga o contexto booleano tal que, quando avaliado como um bool, ele sempre retorna falso. Se você tentar avaliá-lo de outra forma, você receberá uma exceção. Isso permite que você substitua o exemplo de código acima com o seguinte: Use padrões :: UndefObject; Meus $ Primary = Patterns :: Undefobject -> Talvez ($ Schema-> Resultset ('Usuário') -> Localizar (100)) -> Telefone_numbers -> Primário || 'Número desconhecido'; você pode usar a exportação disponível talvez para tornar isso um pouco mais conciso (particularmente se você precisar usá-lo várias vezes). Use padrões :: Undefobject 'talvez'; Meu $ Primary = Talvez ($ Schema-> ResultSet ('User') -> Encontrar (100)) -> Telefone_numbers -> Primário || 'Número desconhecido'; Pessoalmente, acho que esse padrão leva a um código mais conciso e legível e também provoca mais fundo, embora se possa usar técnicas semelhantes para encapsular melhor certos tipos de apresentação Logic.Synopsis Use padrões :: Undefobject 'talvez'; Meu nome $ = talvez ($ user_rs-> encontrar (100)) -> nome || 'Nome de usuário desconhecido'; homepage do produto


Patterns :: Undefobject. Software Relacionado