문제

현재 레거시를 기반으로 한 응용 프로그램을 구축해야합니다. 기존 응용 프로그램에 대한 코드는 버리고 다시 작성해야하지만 일반적으로 다시 작성하는 대신 새로운 것을 기반으로해야합니다. 최근에, 우리는 domaindrivendesign 경로로 가기로 결정했습니다. 따라서 - 부패 방지 층은 우리의 문제에 대한 해결책이 될 수 있습니다. 내가 이해하는 한,이 방법은 기존 응용 프로그램을 점차적으로 다시 작성할 수 있어야합니다.

그러나 - 좋은 예를 찾을 수 없습니다. 감사합니다 어느 정보.

도움이 되었습니까?

해결책

내 특정 구현에서 EmployeaccessService는 저장소에 의해 호출됩니다. 그것은 실제로 반부패 층에 대한 외관입니다. EmployeaccessAdapter를 위임합니다. 어댑터는 레거시 모델 (EmployeeaccessFacade에서 얻는)에서 객체를 가져온 다음 EpployeAccessTranslator로 전달하여 레거시 모델에서 응용 프로그램 모델의 도메인 객체로 객체를 변환합니다.

EmployeaccessService

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

EmployeaccessAdapter

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

Employeaccesstranslator

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

다른 팁

에서 그만큼 DDD Book (도메인 중심 디자인 : 소프트웨어 중심부의 복잡성 태클) 에릭 에반스 :

반 결핵 계층의 공개 인터페이스는 일반적으로 일련의 서비스로 나타나지만 때로는 실체의 형태를 취할 수 있습니다.

그리고 조금 후에

반 결핵 층의 설계를 구성하는 한 가지 방법은 정면, 어댑터 (Gamma et al. 1995) 및 번역기의 조합으로서, 통신 및 전송 메커니즘과 함께 시스템간에 대화하는 데 필요한 것입니다.

따라서 제안 된 것을 보면 예제를 찾을 수 있습니다. 어댑터 패턴 그리고 외관 패턴.

에릭 에반스 (Eric Evans)가 말한 내용을 역설하려고 노력할 것입니다. 반부패 계층이 레이어 외부의 서비스로 나타납니다. 따라서 부패 방지층 외부에서 다른 층은 반부패 층으로 "말하기"를 알지 못할 것입니다. 레이어 내부에는 어댑터와 정면을 사용하여 레거시 정보 소스를 감싸게됩니다.

부패 방지 계층에 대한 자세한 정보 :

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top