目前,我们必须构建一个基于遗留应用程序的应用程序。旧应用程序的代码应该被丢弃并重写,但正如通常情况一样,我们需要在其基础上创建新的东西,而不是重写它。最近,我们决定走领域驱动设计之路。因此,反腐败层可以解决我们的问题。据我了解,这样应该可以逐步重写旧的应用程序。

但是——我找不到任何好的例子。我将不胜感激 任何 信息。

有帮助吗?

解决方案

在我的特定实现中,EmployeeAccessService由库调用。这的确是一个门面到反腐败层。它委托给EmployeeAccessAdapter。该适配器取出由遗留模型(其从EmployeeAccessFacade得到)的对象,然后将其传递到EmployeeAccessTranslator从遗留模型变换到对象的域对象在我的应用程序的模式。

<强> 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)

其他提示

DDD 书籍(领域驱动设计:解决软件核心的复杂性) 作者:埃里克·埃文斯:

反腐败层的公共接口通常是作为一组服务出现的,尽管偶尔会采取实体的形式。

稍后

组织反爆发层设计的一种方法是将立面和适配器的组合(均来自Gamma等。1995年)和翻译人员,以及系统之间通常需要进行的沟通和运输机制。

因此,您可以通过查看建议来找到示例 适配器模式立面图案.

我将尝试解释埃里克·埃文斯(Eric Evans)所说的话,您的反腐败层将作为服务出现在您的层外部。因此,在反腐败层之外,其他层将不知道他们正在与反腐败层“交谈”。在该层内部,您将使用适配器和外观来包装遗留信息源。

有关反腐败层的更多信息:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top