我试图通过使用抽象模型和装饰器来实现用于层间通信的新架构方法.
传统上,当我们设计单片应用程序的层时,我们将拥有应用程序(控制器)层,域(业务)层和基础架构(持久性)层.这些层通过具体的模型定义相互通信,当从数据库中读取时,导航通过存储库,然后导航到服务,最后导航到将其分派给客户端的控制器.
那就是说,让我们谈谈......
通常,基础结构模型不能与业务模型相同,业务模型也不能与UI模型相同.基础架构模型可能仅涉及其目标存储库结构,域层可能仅涉及业务操作,并且UI层必须仅关注其客户端和数据读取/输入.
所有这些层必须"理解"彼此的抽象,或甚至实现双向值映射(或DTO的),以便在它们之间进行通信.映射/ DTO是一种糟糕的方法,因为我们会对数据映射进行不必要的处理.
所以,这就是我要做的事情:通过使用装饰器进行通信来分离图层.
在那种方法中,我们将在共享模块上具有抽象组件和它的装饰器,并且每个层都具有它自己的装饰器.
例如.:
通过这种方法,我们可以:
这是一个纸上的例子:
所以......我问的是建议,提示和一些意见,如果这是一个好方法.
[更新#1]:
为了简化我的问题,我将在下面发布一个用例:
共享组件:
// Abstract Foo
public abstract class AbstractFoo {
protected Long id;
protected String color;
protected LocalDateTime lastModified;
protected Long getId();
protected String getColor();
protected void setId();
protected void setColor();
}
// Abstract Decorator(wraps foo)
public abstract class FooDecorator extends AbstractFoo {
private final Foo foo;
protected FooDecorator(Foo foo) { this.foo = foo; }
protected Long …Run Code Online (Sandbox Code Playgroud) 如何在Spring应用程序中访问当前的线程范围......
换句话说,如何识别当前线程范围是请求还是系统本地线程?