- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我无法理解六边形(端口适配器)架构中依赖的含义。
Here他们有漂亮的照片。我没有看到的是与 n 层结构有什么区别(实现)。
在 onion/hex 架构中,inner 层应该独立于outer 层,但它是如何实现的(请注意我的 java/spring 背景)
在 N-layered 中,您可以自动连接第 N+1 层组件。我看到了依赖的方向,但是你怎么能恢复它:-/
如果我要调用 outer layer ,我会使用接口(interface)。所以接口(interface)在内层,实现在外层。现在我独立于外。就是这个?只是API放在哪里?
无论如何,hex/onion 应该独立于依赖解析,所以这是否意味着我不应该使用 @Autowire、@Inject 等?
非常感谢您提前澄清。
最佳答案
哇,这么多问题。我会尝试一个一个地完成它们
In onion/hex architecture the outer layers should be independent from inner ones, but how is it implemented(please note my java/spring background)
对于架构模式,您会看到很多不同的解释,但这个让我觉得很奇怪。洋葱模式的内部部分是您的领域逻辑,而外部部分是其他领域或技术(数据库、网络服务……)的适配器。您不希望您的域依赖于这些技术细节,因此外部可能依赖于内部,但反之则不然。
In N-layered you auto-wire the N+1th layer components. I see the direction of the dependency, but how can you revert it:-/
这称为控制反转。您的域(内部部分)经常需要调用适配器(例如您的数据库访问逻辑),因此在运行时必须存在依赖关系。但是在编译时你不想要这样的依赖,以便能够替换所使用的特定技术。您可以通过使用接口(interface)和依赖注入(inject)来做到这一点。示例:您的域可能需要访问所有品牌的列表。为此,您创建了一个如下所示的界面:
public interface BrandRepository{
public Set[Brand] all()
}
此界面是您域的一部分。您当然有该接口(interface)的实现,可能基于 Jdbc(或 In-Memory-List,或 Web 服务)。此实现位于洋葱的外层。由于接口(interface)的实现依赖于内部部分,正如所要求的那样。
If I'm about to call outer layer, I will use interface. So the interface is in inner and implementation in outer layer. Now I'm independent on outer. This is it?
是
It is just about where the API is placed?
很难回答:你的 API 是什么?您的域模型是适配器的 API。适配器是系统其他部分或其他系统的 API。
Anyway the hex/onion should be independent from dependency resolution, so does it mean I should not use @Autowire, @Inject etc??
现在可以争论一个世纪了。严格来说,这些注释依赖于您的 DI 框架。但是,由于这些得到了标准化,它们变得更加依赖于您的语言(如果不进入无限递归并收集大量语言设计经验,您将无法避免)。根据定义不能包含任何实现的注释的依赖关系不是什么大问题,我个人认为将它们包含在我的代码中没有问题。
What I don't see is what is the difference(implementation) from n-layer structure.
洋葱结构是 n 层架构这一相当笼统的术语的特定变体。
关于java - 洋葱-六边形架构依赖混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29097189/
可以用纯 CSS3 创建这样的六边形吗? 谢谢你的帮助! 最佳答案 一个简单的搜索就找到了:CSS Hexagon Tutorial 引用自网站: Put a 104px × 60px div wit
我有一个简单的六边形网格,我在其中选择一组六边形,然后用一些随机点填充这些六边形。 让我解释一下生成点的具体过程: 我使用六 Angular 坐标列表选择六边形。 将六边形分组为区域。 分别为每个区域
如何实现如下所示的六边形 ImageView 。 http://imgur.com/1PEGuQu 请注意,我尝试了这个问题的解决方案: How to give hexagon shape to Im
我正在尝试制作一款游戏,让用户获得经验值并提高等级,如下图所示。 我想通过使用进度条来实现这一点,但我无法制作一个六边形的进度条。 黄线应该随着用户积分的增加而增加。 谁能告诉我如何实现这一点?(我试
我正在尝试制作可以绘制五边形六边形等的函数。算法有问题,我应该将线条与 pygame.draw.line 进行比较吗?看起来围绕确定线坐标的工作太多了。有没有简单的方法来绘制它们?我也不知道另一个可以
我正在尝试创建一个六边形小部件。这应该看起来像这样: (请忽略横线) 在手机上是这样的: 现在六边形本身应该相当容易,网上有很多关于如何创建它们的文档。但是,关于如何添加这样的文本的信息很少。 通常,
我想用 ggplot 的漂亮框架创建一个绘图。这是一个六边形的密度图。我使用了 https://www.r-graph-gallery.com/329-hexbin-map-for-distribut
我是jointJS的新手,我需要使用JointJS创建自定义形状,我尝试使用矩形创建菱形,使其高度和宽度相同,然后旋转45度,如下所示, var diamond = new joint.shapes
这个问题在这里已经有了答案: How to make a curved edge hexagon by using CSS (6 个答案) 关闭 8 年前。 我正在尝试使用 CSS 制作一个形状:圆
我有一个由 CSS 创建的六边形。我试图在六边形内获取标题、段落和按钮,但所有这些元素都隐藏在格式化前后的六边形后面。这是代码的链接:https://jsfiddle.net/o8a3pm3h/6/
这不是关于如何使单个元素成为六边形的问题。有很多这样的。 这是一个问题,看看是否有办法创建纯 css 六边形背景。 我得到了 kind of close by creating triangles :
是否有机会在六边形内放置图像?我习惯了hexagonal shaped cells in html ,但我无法用(背景?)图像填充它。 这是我尝试过的: .top { height: 0; w
我喜欢将 CSS3 六边形置于 div 的中心(请查看下面的屏幕截图)。我使用 Foundation Framework,因此 Hexagon 由列包装器包装(在本例中使用类“warpper”)。 我
我有一个六边形,我想在它的每个 Angular 上写点东西。确切地说,我想从六边形的外部区域命名它的每个 Angular 。你可以在这个 jsfiddle 中看到代码.这是我现在拥有的: HTML:
我制作了一个具有笔划宽度的圆形六边形,但顶部和底部曲线较暗。如何给边框均匀的描边宽度?这是我的 svg 代码
我正在尝试在 Android 上实现圆角六边形 ImageView 完全像这个但是六边形: 我尽了最大的努力,但都失败了,我确实找到了this答案是完美的,因为它可以让你输入所需的边数,剩下的就由它来
我在这个网站上有问题:http://www.dark-project.cz/wesnoth/map-view/1 (点击单位)。在我的 Javascript 源代码中 http://www.dark-
我正在通过 Unity 创建一个简单的六边形几何数学游戏。这确实与 Unity 无关。 我借了Image来自 https://catlikecoding.com/unity/tutorials/ ,
我试图在六边形 div 周围放置一个边框,或者更准确地说是 3 个 div 的六边形可见区域。我已经尝试了一些不同的方法来创建一个边框来玩弄 div 的可见性。我在下面的示例中拥有的是我最接近的,但仍
是否可以创建一个属性设置为 % 而不是 px 的六边形?所以我可以在我的网站中创建一个宽度和高度为 100px 的 div 容器,设置为 100% 宽度和高度的六边形会占据整个 div?感谢您的任何回
我是一名优秀的程序员,十分优秀!