Pergunta

O meu c ++ SOA aplicativo tem um conceito de "sessão" que é usado trocar dados entre os serviços. No exemplo a sua utilizado para verificar a legalidade de algumas operações de serviços uma antes de executar sessão B, que confirma ou mudanças de reversão. Seja qual for.

Eu tenho 2 tipos de modos de sessão: normal e what-if. Indo mais longe, tenho sessão diferente, sessão de legalidade, de sessão para atribuir, de sessão para cometer etc. Este é um problema principal. sessão de legalidade pode ser what-if ou real etc.

Como corrigir isso e evitar a duplicação de código?

Eu posso fazer um ISessionFactory de interface e têm WhatIfFactory e RealFactory implementá-lo. Então eu poderia fazer um ILegalitySession e make WhatIfLegalitySession e RealLegalitySession implementá-lo. Então meus fábricas voltaria objetos apropriados.

Tem 2 grandes problemas. E se novo modo virá? Vou ter de implementar nova fábrica e novas classes para todas as sessões! E se novo tipo de sessão vem? Eu tenho que mudar tanto das fábricas ...

Talvez demitir-2 hierarhies e ter sessões whatif "decorar" sessão real? Como posso localizar a mudança?

Foi útil?

Solução

Tente implementar sua WhatIf com decoradores. Ou extrair algumas 'que se' específica peças para tipo de estratégia.

Outra opção é usar o padrão de Estado. 'WhatIf' estado eo estado 'Real'.

Outras dicas

Eu acho que o href="http://en.wikipedia.org/wiki/Decorator_pattern" rel="nofollow noreferrer"> decorador padrão faz sentido aqui. Você também pode querer olhar para o padrão de estratégia e seu primo em tempo de compilação, baseado em políticas de design . É difícil dizer o que é melhor, sem mais informações. Decoradores são grandes para adicionar um comportamento adicional, os outros dois para mudar o comportamento existente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top