Architecture DDD,反腐败层,如何操作?

Architecture DDD,反腐败层,如何操作?,architecture,domain-driven-design,rewrite,legacy,Architecture,Domain Driven Design,Rewrite,Legacy,目前,我们必须构建一个基于遗留应用程序的应用程序。旧应用程序的代码应该扔掉并重写,但正如它通常所做的那样——我们需要在它的基础上建立新的东西,而不是重写它。最近,我们决定走DomainDrivenDesign道路。所以,反腐败层可以解决我们的问题。据我所知,这样应该可以逐渐重写旧的应用程序 但是,我找不到任何好的例子。如果您能提供任何信息,我将不胜感激。来自Eric Evans的: 的公共接口 通常会出现反腐败层 作为一组服务,尽管 有时它可以采取以下形式: 实体 过一会儿 一种组织产品设计的方

目前,我们必须构建一个基于遗留应用程序的应用程序。旧应用程序的代码应该扔掉并重写,但正如它通常所做的那样——我们需要在它的基础上建立新的东西,而不是重写它。最近,我们决定走DomainDrivenDesign道路。所以,反腐败层可以解决我们的问题。据我所知,这样应该可以逐渐重写旧的应用程序

但是,我找不到任何好的例子。如果您能提供任何信息,我将不胜感激。

来自Eric Evans的:

的公共接口 通常会出现反腐败层 作为一组服务,尽管 有时它可以采取以下形式: 实体

过一会儿

一种组织产品设计的方法 反腐败层被视为 正面、适配器(两者)的组合 来自Gamma等人,1995),以及 翻译人员,以及 通信和运输机制 通常需要在两人之间交谈 系统

因此,您可以通过查看建议的和

我将试着解释Eric Evans所说的,您的反腐败层将作为服务出现在您的层之外。因此,在反腐败层之外,其他层将不知道他们正在与反腐败层“对话”。在该层内部,您可以使用适配器和外观来包装遗留信息源

有关反腐败层的详细信息:


在我的特定实现中,EmployeeAccessService由存储库调用。它实际上是反腐败层的一个门面。它将委托给EmployeeAccessAdapter。适配器从旧模型(从EmployeeAccessFacade获取)获取一个对象,然后将其传递给EmployeeAccessTranslator,以将该对象从旧模型转换为我的应用程序模型中的域对象

员工访问服务

public Employee findeemployee(字符串empID){
返回适配器findeemployee(empID);
}
员工访问适配器

public Employee findeemployee(字符串empID){
EmployeeAccessContainer=facade.findeEmployeeAccess(empID);
返回translator.translate(容器);
}
EmployeeAccessTranslator

公共员工翻译(EmployeeAccessContainer){
员工emp=null;
if(容器!=null){
雇员=新雇员();
setemployee.setEmpID(idPrefix+container.getEmployeeDTO().getEmpID());
…(更复杂的映射)

谢谢。我现在就去看看。但我已经感觉到这还不够。有没有代码示例?:)这一个很好理解适配器模式:)链接构建经常需要的反腐败层()和DDD-反腐败层()是断片这是非常古老的,我知道,但要回答这个问题,你不会找到ACL的代码示例。模式太高,对于一个cookie-cuter配方来说变量太多。我的建议是,如果ACL只是为了迁移的生命周期而需要,那么就不要再喜欢了。它不一定很漂亮。只需编写测试数据完整性是关键,而不是性能或完美重构的代码。最后只有三个链接中的一个被打开