【问题标题】:Fowler's "Patterns of Enterprise Application Architecture" still relevant? [closed]Fowler 的“企业应用架构模式”仍然适用吗? [关闭]
【发布时间】:2017-07-22 20:40:04
【问题描述】:

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

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

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

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

【问题讨论】:

  • 人们仍然倾向于引用 GoF。
  • 2003 年的编程语言书籍已经过时了。但 PEAA 不是关于编程语言,而是关于面向对象的设计。除非你已经转向下一件大事(例如函数式编程,或使用 M 进行模型编程),否则这本书在今天和它发布之日一样重要。
  • 函数式编程如何成为下一件大事?它可以追溯到 50 年代的 LISP(1958 年),如果考虑 Lambda 微积分,甚至可以追溯到 30 年代,但我们不要吹毛求疵。是的,它还活着,还在踢。但是下一件大事......然后字母是下一件大事:D
  • 请注意,这本书是在 2002 年 11 月出版的,而不是 2003 年出版的。但是,它非常相关——它是关于原则和思想的,而不是关于代码的。里面的概念验证代码相当不推荐使用,但如果你了解 C# 或 Java,你可以轻松更新这些代码 sn-ps。
  • @gWiz “函数式编程如何成为下一件大事?” - 它是下一件大事,因为它越来越被广泛接受。 “下一件事”不是时间顺序问题。这是一个优势的问题(从当前来看)。不管一个范式是旧的还是新的,都无关紧要。重要的是它的无处不在。旧的,但实际上大多数人都不知道,现在被广泛使用?接下来就是。

标签: java jakarta-ee architecture poeaa


【解决方案1】:

是的,它仍然非常相关并且是极好的资源。

【讨论】:

  • ... 不仅适用于 Java 开发人员。这确实是一本很棒的书,你不需要任何特殊的 Java 知识就能理解他在写什么。
  • 2015 年仍然如此?
  • @robsch 是的,仍然相关。
  • 2020 年仍然如此?
【解决方案2】:

这本书和Eric Evans book about Domain-Driven Design 是我的年度书籍 - 每年;) ...

【讨论】:

    【解决方案3】:

    这是非常相关的。我经常向其他开发人员介绍该书中的特定模式,例如指向他的网站 (http://www.martinfowler.com/eaaCatalog/) 的链接,例如 Data Transfer ObjectService Layer

    后者是我认为是我“发明”的,直到我看到 Fowler 已经写过它。

    【讨论】:

    • 不能发明模式,只能发现它们;)
    【解决方案4】:

    鉴于这个问题的答案现在已经三年了,我觉得重申 Martin Fowler 模式的相关性很重要。

    GOF 设计模式一书于 1994 年首次出版,其中的许多模式仍然被认为是相关的。我们可能对它们有了更深入的了解并产生了微妙的变体,但它们是任何良好 OO 设计的基础。

    现代语言越来越多地在幕后实现一些模式,因此理论上开发人员不必了解它们(一个例子是通过 C# 中的yield 语句的迭代器模式)。但是,开发人员更适合了解它们。

    继续阅读 Martin 的书 - 这绝对是相关的。确实,现在许多库都在后台支持这些模式,再次将它们从开发人员那里抽象出来,但它们再次成为企业应用软件开发的核心。

    他们解决了一次又一次出现的问题,而与语言、系统或平台无关。

    【讨论】:

      【解决方案5】:

      我不同意“偏向 Java”的说法。就其本质而言,模式与语言无关。它们被定义为常见问题的解决方案。 Fowler 的书有 Java 和 C# 的示例,所以我看不出“偏见”来自哪里。它们是最常见的面向对象语言,他正在谈论企业问题的面向对象解决方案。

      GoF 书中有 Smalltalk 和 C++ 的示例。为什么他们对 Java 和 C# 如此“有偏见”?提示:写这本书时语言并不存在,但模式与以往一样相关。

      【讨论】:

      • 嗯,我没有读过这本书,所以我真的不知道......我并不是说偏见不好。说“企业中使用的常见面向对象语言”可能更正确,但我是 Java 人——当我想到“企业中使用的面向对象语言”时,我会想到 Java。跨度>
      • 同意,但其他阅读您评论的人可能会认为您已阅读并回避,因为他们不是 Java 人。我想澄清一下。
      • 这本质上是不正确的。您所说的所有语言都是命令式语言。您需要函数式语言中的函数式模式、命令式语言中的命令式模式等。想想看,依赖突变的模式在纯函数式语言中是行不通的。可能我们通常使用的模式都不能与 prolog 或 Erlang 一起使用。只是说,在合理的范围内 - 这很重要。
      【解决方案6】:

      【讨论】:

        【解决方案7】:

        非常相关,当然不会局限于一种语言。见证即将到来的 Rails 迁移到 Merb,在非常真实的意义上,从 POEAA (ActiveRecord) 中的一种模式迁移到另一种模式 (DataMapper)。

        许多其他概念,从 ORM 策略到会话管理,都是相关且与语言无关的。当我读到福勒的影响力有多大时,我仍然感到震惊。他并没有在这里发明所有的概念,但他确实以简洁易懂的方式对这些想法进行了编纂和命名,以使它们成为整个行业的通用说法。还是必不可少的。

        【讨论】:

          【解决方案8】:

          绝对!

          这本书很经典。我刚刚重新阅读它以帮助完成一些关于事件驱动的会计系统的工作。

          从那以后,Fowler 一直在重新审视一些模式,您可以查看他的 works in progress

          【讨论】:

          • 链接已损坏。
          • 固定链接到包含模式文章的新页面
          【解决方案9】:

          是的,这本书仍然很重要。如果您担心它的价值,您可以在亚马逊上提取二手副本并通过同一渠道出售。

          【讨论】:

            猜你喜欢
            • 2021-08-29
            • 1970-01-01
            • 1970-01-01
            • 2016-09-05
            • 2016-11-06
            • 2023-03-02
            • 2011-08-27
            • 1970-01-01
            • 2012-07-09
            相关资源
            最近更新 更多