我最近阅读/观看了由Java Champion Adam Bien撰写的很多文章/视频,他主张使用古老但更新的 实体 - 控制 - 边界设计模式 JAVA EE> = 6.
利用CDI,EJB 3.1,JPA 2和其他JAVA EE 6功能,此模式应有助于创建更多面向业务的组件,更易于单元测试,并根据职责更高地分离关注点.
由于我使用了上面列出的所有功能,而且这种模式听起来非常有趣,我正在寻找它,看看ECB是否符合我的下一个项目要求.
在欧洲央行,每个逻辑实体分为三部分(如果我错了,请纠正我):
一个边界,一种强大的门面,只有类的访问之外.对于外部(如果我做对了),我们的意思是在应用程序之外,例如.远程客户端,在组件包之外,例如.我申请的另一部分;
a(n可选)控制器,负责某种操作(例如,实体的验证);
一个实体,可以是一个纯粹的JPA实体,但也可以包含一些装饰/验证/(最小)业务逻辑.
例如,考虑有两个不同的实体(Orange和Apple),一个在它们上做CRUD FruitsManager的类()和一个对它们执行某些控制的类(FruitsQualityChecker).
直到昨天,它会像(OLD WAY):
Run Code Online (Sandbox Code Playgroud)com.foo.bar.business.FruitsService /* CRUD */ com.foo.bar.business.FruitsQualityChecker /* CONTROL */ com.foo.bar.model.Orange /* ENTITY */ com.foo.bar.model.Apple /* ENTITY */
和欧洲央行一样,我会(新方式):
Run Code Online (Sandbox Code Playgroud)com.foo.bar.business.oranges.boundary.Oranges …
我试图了解CDI和EJB以及实体边界控制(ECB)模式.我对ECB模式的理解是边界是事务边界的起点和终点.除此之外,CDI不像EJB那样提供事务支持.
因此,如果我想成功实现ECB模式,那么以下是正确的;
谢谢
我想知道可以在Java EE 6实现中应用的设计模式.
JPA是否取消了DAO的使用?
请提供可以学习的其他模式.
我刚看过Bob叔叔关于架构软件的演讲:
http://www.cleancoders.com/codecast/clean-code-episode-7/show
他谈到了ECB模式(实体 - 控制器 - 边界)
他坚持认为所有软件必须是主要的,尽管整个用例.
实际上,他重复了很多次关于工具,框架等的决定......必须推迟.
我对"边界"一词很感兴趣,所以我发现了这个解释:
在这里,我们看到边界与每个传递机制相关,如Web机制的形式(MarketingCampaignForm)等......
所以我的问题是:
boudaries必须知道将使用的交付机制的类型,并与Bob叔叔的观点相矛盾吗?
或者它们必须是简单的POJO代表简单的数据结构,它将在内部系统和交付机制之间共享; 并包含来自用户的输入和内部系统中控制器的输出?
我不确定我是否有正确的概念。
人们告诉我
边界 = 视图
实体 = 模型
控制 = 控制器
但是根据我对 MVC 的了解。(胖模型,瘦控制器)
不是 Boundary = Controller, Control = Model (业务逻辑)和 Entity = Model (orm 类或类似的实体类,它只执行 crud )。
我可能错了,请指导我!