首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >边界互通限制Java

边界互通限制Java
EN

Stack Overflow用户
提问于 2014-07-09 23:14:18
回答 2查看 775关注 0票数 0

在Java中应用边界-控制-实体 (BCE)模式:

代码语言:javascript
复制
@Stateless //1st boundary
public class A {}

@Stateless //2nd boundary
public class B {}

到现在为止,一切都还好,现在,让我们假设,出于某种原因,我需要使用B在A上公开的一些服务,所以,A现在看起来像:

代码语言:javascript
复制
@Stateless 
public class A {
    @Inject
    B b;
    //... call some B's methods
}

但是,根据BCE模式代表

控件元素可以与其他两种元素进行通信,但实体和边界元素不应该直接通信。

显然,对于JPA实体,它们需要相互通信(否则,“联接”是不可能的)。然后,我以一些相关的问题结束:

( 1) 为什么禁止边界之间的通信?

2)在Java下,我们可以使用@Remote接口,这样做是否仍然违反语句?

代码语言:javascript
复制
@Stateless 
public class A {
    @Inject
    RemoteB b; //now uses a remote dependency
}

@Stateless
@Remote(RemoteB.class)//implements a remote interface
public class B {}

3) Java如何解决模式.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-14 22:36:11

如果某些边界需要沟通,那么交流是一种难闻的气味,也许您的设计需要重构,例如,提取控件中的常见行为,并在两者中使用。在使用@Remote的情况下,边界不仅与接口高度耦合,还与所使用的DTO(DTO总是重复状态)高度耦合。在面向SOA/微服务的体系结构中,如果您需要这种相互通信,您应该更喜欢低耦合,这意味着使用json/xml消息。

Java允许您使用jax-rs来实现低耦合。

第5次AirHacks会议

票数 0
EN

Stack Overflow用户

发布于 2014-07-10 10:57:05

首先,我的建议是使用架构作为如何构建应用程序的指导方针,但不要将其作为一项法律--因此,始终要使其适应您的需要,并做一些明智、简单和适合您的情况的工作。

边界背后的想法是,它是唯一一个外部可见的契约,对其背后的业务逻辑来说,它可能会发生变化,并且其细节是隐藏的。保持对其他边界的依赖是合理的--但是控件可以根据需要使用并被多个边界调用。

Adam,Java大师之一,在他的研讨会中强调并谈到了这种模式,即他在这个例子中解释了。另一个好文章是这篇吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24665136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档