问题标签 [poeaa]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6716 浏览

design-patterns - 设计模式的类别

经典的“设计模式:可重用的面向对象软件的元素”实际上向我们大多数人介绍了设计模式的概念。

然而,这些天来,我发现 Martin Fowler 的“企业应用程序架构模式”(POEA)之类的书在我的日常工作中更加有用。

在与其他开发人员的讨论中,许多人(公平)指出,像 .NET 这样的框架正在慢慢开始提供 GOF 书中的许多模式,那么为什么要重新发明轮子呢?

似乎许多开发人员认为 GOF 书是唯一值得参考的设计模式。所以他们的逻辑是,因为框架(.NET 等)为我们提供了许多 GOF 模式,所以模式已经过时并且不再那么重要。

令人惊讶的是(至少对我来说)当我提到 POEA 中描述的模式时,我经常会遇到茫然的目光。

POEA 证明模式不仅仅是交互器、单例、命令等。我还要说 GOF 中的模式实际上只是模式的一个独特“类别”,适用于不同(非重叠)设计级别,而不是那些在 POEA。

那么,您的开发中还应用了哪些其他“类别”的模式?这些模式适用于什么级别的设计?它们通常在开发过程的哪个阶段使用?这些模式是否有书籍或参考资料?

0 投票
3 回答
625 浏览

c# - LINQ、多态、元数据映射、继承映射器

我正在写一个小程序。我编写的用于控制每个存储库的接口定义了 Save(IPublicObject) 的方法。我将 LINQ 用于存储库 CRUD 的 SQL 版本。我的问题是这个。我只想有一个接受接口类型的方法。我想考虑如何最好地为我传入的继承类型找到保存操作。

在这本书中,我正在阅读企业应用程序架构的模式。我依靠继承映射。所以我创建了一个派生对象

然后我想将它传递给存储库的保存功能。正是在这一点上,我试图思考如何最好地说,好的,我们需要使用“什么?” 保存方法等...

我应该使用注册表,映射类型的配置设置吗?

0 投票
1 回答
2841 浏览

design-patterns - 应用工作单元模式

我在企业应用程序架构模式中读到过,工作单元只能在单个会话中使用。所以每个会话都应该有它唯一的工作单元。谁能告诉我为什么我不能为整个应用程序使用一个工作单元(在我的例子中是 ASP.NET)。

0 投票
4 回答
3939 浏览

design-patterns - 让域对象知道数据访问层是不正确的吗?

我目前正在重写一个应用程序以使用从域层完全抽象数据库的数据映射器。但是,我现在想知道处理域对象之间关系的更好方法是:

  1. 直接在域对象内从相关数据映射器调用必要的 find() 方法
  2. 将关系逻辑写入本机数据映射器(这是示例在 PoEAA 中倾向于执行的操作),然后在域对象中调用本机数据映射器函数。

在我看来,为了保留“胖模型,瘦控制器”的口头禅,域对象必须了解数据映射器(无论是它们自己的还是它们可以访问系统中的其他映射器) . 此外,选项 2 似乎不必要地使数据访问层复杂化,因为它跨多个数据映射器创建表访问逻辑,而不是将其限制在单个数据映射器中。

那么,让域对象知道相关的数据映射器并直接从域对象调用数据映射器函数是不正确的吗?

更新:这是我可以设想的处理域对象之间关系问题的仅有的两种解决方案。欢迎任何显示更好方法的示例。

0 投票
3 回答
1985 浏览

asp.net - .NET 示例项目设计模式 Fowler

是否有使用 Martin Fowler (企业应用程序架构模式)书中讨论的模式的示例 ASP.NET 项目?

我已经下载了 Northwind 入门工具包和 Dinner Now,它们非常好。是否还有其他人使用诸如工作单元,存储库之类的东西...

谢谢,列文卡登

0 投票
9 回答
19303 浏览

java - Fowler 的“企业应用架构模式”仍然适用吗?

我正在考虑购买 Martin Fowler 的“企业应用程序架构模式”。

在我看来,这似乎是一本很棒的书,一本偏向于企业 Java 的架构书——正是我所需要的。

但是,在计算机时代,它已经很老了。2003 年是很久以前的事了,从那以后事情发生了很大的变化。

所以我想知道是否有人可以告诉我:这本书仍然相关,值得一读吗?

0 投票
1 回答
253 浏览

architecture - 非分层应用程序的模式

在企业应用架构模式中,Martin Fowler 写道:

因此,本书是关于如何将企业应用程序分解为层以及这些层如何协同工作的。大多数重要的企业应用程序使用某种形式的分层架构,但在某些情况下,其他方法(例如管道和过滤器)很有价值。我不会进入这些情况,而是关注分层架构的上下文,因为它是最有用的。

构建非分层应用程序/应用程序部分存在哪些模式?以金融机构的统计建模引擎为例。可能有一个数据访问层,但我希望大部分代码都在一个层中。您是否还会期望在这样的层中看到“四人帮”模式?域模型怎么样?您会完全使用 OO,还是纯粹是功能性的?

引用提到管道和过滤器作为层的替代模型。我可以很容易地想象一个这样的引擎使用管道作为分解数据处理的一种方式。还存在哪些其他模式?任务调度、结果聚合或工作分配等领域是否有共同的模式?MapReduce 有哪些替代方案?

0 投票
4 回答
12936 浏览

java - Hibernate 遵循哪种模式?

在他的“企业应用程序架构模式”一书中,Martin Fowler 谈到了软件开发中常见的持久性模式,特别是与 ORM 相关的模式。

是否存在 Hibernate 最接近的模式?

0 投票
5 回答
17774 浏览

asp.net-mvc - 视图模型和数据传输对象有什么区别?

我将这个问题基于 Fowler PoEAA。鉴于您对本文的熟悉程度,ASP.NET MVC 中使用的 ViewModel 不与 DTO 相同吗?为什么或者为什么不?谢谢你。

0 投票
4 回答
1942 浏览

design-patterns - Fowler 空对象模式:为什么要使用继承?

为什么 Fowler PoEAA p。498 以以下方式定义空对象模式(示例缩短,语言是 c# 但没关系):

INull用作标记界面。我不太喜欢这种方法,原因有以下三个:

  1. 属性需要标记为虚拟
  2. 我不能再密封我的实体类了
  3. 至少引入 (n+1) 个新类型(n 个空对象,一个标记接口)

为什么不这样实现:

我通常认为所有 Fowlers 的例子都经过深思熟虑,显然我在这里遗漏了一些东西。