Pergunta

No momento, temos que construir uma aplicação que se baseia em um legado. Código para que a aplicação de idade deve ser jogado fora e reescrito, mas como ele normalmente vai - em vez de reescrevê-lo, precisamos base de algo novo sobre ele. Recentemente, decidimos ir o caminho DomainDrivenDesign. Então - camada anti corrupção poderia ser uma solução para os nossos problemas. Tanto quanto eu entendo, desta forma, deve ser possível para reescrever gradualmente a aplicação de idade.

Mas - eu não consigo encontrar nenhum exemplo bom. Eu apreciaria ANY informações.

Foi útil?

Solução

Em minha implementação particular, EmployeeAccessService é chamado por um Repositório. É realmente uma fachada para a camada de Anti-corrupção. Ele delega ao EmployeeAccessAdapter. O adaptador recupera um objeto do modelo de legado (que recebe de EmployeeAccessFacade), em seguida, passa para o EmployeeAccessTranslator para transformar o objeto do modelo de legado para o objeto de domínio no modelo do meu aplicativo.

EmployeeAccessService

public Employee findEmployee(String empID){
    return adapter.findEmployee(empID);
}

EmployeeAccessAdapter

public Employee findEmployee(String empID){
    EmployeeAccessContainer container = facade.findEmployeeAccess(empID);
    return translator.translate(container);
}

EmployeeAccessTranslator

public Employee translate(EmployeeAccessContainer container){
    Employee emp = null;
    if (container != null) {
        employee = new Employee();
        employee.setEmpID(idPrefix + container.getEmployeeDTO().getEmpID());
        ...(more complex mappings)

Outras dicas

De o DDD livro (Domain-Driven Edifício: Roubada complexidade no coração de Software) por Eric Evans:

A interface pública do ANTICORRUPÇÃO CAMADA geralmente aparece como um conjunto de serviços, embora ocasionalmente, pode tomar a forma de Uma entidade.

e um pouco mais tarde

Uma maneira de organizar o projeto de o CAMADA ANTICORRUPÇÃO é como um combinação das fachadas, os adaptadores (ambos de Gama et ai. 1995), e tradutores, juntamente com o mecanismos de comunicação e de transporte geralmente precisava falar entre sistemas.

Assim, você pode encontrar exemplos, olhando para a padrão adaptador sugeriu e fachada padrão .

Vou tentar parafrasear o que Eric Evans disse, sua camada anti-corrupção aparecerá como serviços para o exterior da sua camada. Então, fora da camada anti-corrupção das outras camadas não sabem que são "falar" com uma camada anti-corrupção. Dentro da camada você usar adaptadores e fachadas para embrulhar as suas fontes de informação legados.

Mais informações sobre a camada anti-corrupção:

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