Onde a declarar as interfaces?

votos
3

Eu estou trabalhando em um projeto com diferentes montagens (imagine uma impressora de módulo, uma imagem do módulo etc.). Neste projeto, todas as interfaces são declaradas dentro de um Interfaces-montagem (imagine Interfaces.dll com interfaces IPrinterModule, IImagingModule etc.).

Desde que eu sou um cowboy-codificador;) Eu tenho que perguntar o SO-comunidade se isso realmente é a melhor prática ou como isso pode ser feito de uma maneira melhor?

Publicado 19/05/2009 em 14:44
fonte usuário
Em outras línguas...                            


3 respostas

votos
6

Isso soa bem para mim - que tem um conjunto separado para interfaces é bastante comum, especialmente para sistemas que fazem um monte de plugins.

O mais provável é que você está usando estas interfaces para criar pontes fracamente acoplados entre os componentes ortogonais (bom para você, por sinal). A única maneira de fazer isso de uma forma verdadeiramente modular é ter um conjunto separado para essas interfaces de modo que cada tipo que quer implementa a interface ou referências ele está realmente usando o mesmo tipo de interface. Realmente a sua única outra opção seria a de compilar tudo em todo o sistema em uma montagem.

Respondeu 19/05/2009 em 14:46
fonte usuário

votos
4

Adotamos uma abordagem similar. Você definitivamente quer separar as interfaces da sua aplicação (atual), por isso é fácil para fornecer diferentes implementações no futuro. Martin Fowler descreveu este como o Interfaces Separado padrão.

Se as interfaces têm dependências uns sobre os outros (não um IPrinter retornar um IImageXXX?), Então você realmente precisa deles no mesmo assembly para evitar dependências de compilação circulares.

Respondeu 19/05/2009 em 14:49
fonte usuário

votos
1

Se há referências circulares, em seguida, mantendo todas as suas interfaces em assembly separado irão ajudá-lo. Eu li muitos exemplos de código (de microsoft, codeproject e outros sites) no últimos dias, enquanto estudava sobre fluxo de trabalho, a interface é declarado na assembléia implementá-lo.

Como IPrinterModule será declarado na assembléia que implementa

Respondeu 19/05/2009 em 14:48
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more