A Little Java, A Few Patterns

Matthias Felleisen, Daniel P. Friedman

出版社

The MIT Press

出版时间

1997-12-19

ISBN

9780262561150

评分

★★★★★
书籍介绍
这本书最特别之处,在于它把 Java 当作一种函数式语言来教。当大多数编程书把「对象」当作世界的核心时,作者却让 new 一个对象变得像构造一个列表那样层层嵌套——一串 new Onion(new Lamb(new Skewer())) 读下来,读者会忽然察觉 class、interface、object 之间那层一直模糊的关系。全书围绕 visitor pattern 徐徐展开,不是告诉你「这是什么模式」,而是让你亲眼看着它如何从「数据类型变种越来越多、每次都要改代码」的困境里自然长出来。它适合那些不满足于「会用 Java」,而想理解面向对象与函数式究竟如何交汇的人。当然,也有人觉得它繁琐、最后一章晦涩,但正是这种较真,让读完的人对「设计」二字有了不同的体感。
AI导读
核心看点
  • 用Java子集讲解函数式编程思想
  • 循序渐进推导访问者模式原理
  • 一问一答式引导理解OOP概念
读者共识
  • 讲解清晰,自然引出设计模式
  • 将Java当作函数式语言来玩
  • 示例简练,适合入门学习Java
精彩摘录
  • "And a third? 21 Here's one more: new Onion( new Lamb( new Onion( new Skewer()))). Are there only Onions on this Shish: new Skewer()? 22 true, because there is neither Lamb nor Tomato on new Skewer()"
  • "If Java had parametric polymorphism for methods, no downward cast would be necessary for our visitors (Martin Odersky and Philip Wadler, Pizza into Java: Translating Theory into Practice, Conference Record on Principles of Programming Languages, 146-159. Paris, 1997)"
  • "Does that mean that anybody can write yy.p = new Bot() and thus change a pieman like yy? 36 No, because yy's type is Peiman, p isn't available. Only addTop, remTop, substTop, and occTop are visible. Isn't it good that we didn't include p in Peiman? 37 Yes, with this trick we can prevent others from "
用户评论
沒見過把 OOP 當 FP 玩兒的,但非常有趣,看他循序漸進,去到某處就有似曾相識的感覺,慢慢就更懂了 class interface object 之間的關係,最後掌握 visitor pattern。有意思,但說這是 Java 精粹的話,不知道是在黑 Java 還是鼓勵讀者研究 FP 呢,反正我看完對 FP 更感興趣些。王垠推薦就看了,不錯。
看完了,把OOP当成FP来玩,佩服。至于实用性?看这书的,睡在乎? visitor模式很漂亮!
示例简练,可用作学习Java的第一本书
visitor pattern讲透了;最后用interface实现的Y组合字还没太看懂
看了两章,看不下去了。。。
这是一本不浮躁的书,从减少模版代码的角度挺有意义的
牵强的用scheme的思路讲了讲visitor pattern, 但是考虑成书时间,彼时design patterns刚初登舞台,所以开阔思路可以,visitor pattern本身应用是很窄的
抽象,框架。出现accept方法的时候,惊呆了
有点啰嗦,主要就是讲了一个visitor pattern,还是有点意思的,虽然工作中几乎不可能这么写代码。书写于1997年,如果现在用范型重写一遍示例代码应该会更优雅一点。
一刷后,有点不明觉历。特别是第十章,不知道主要是说什么,看起来是出现了对状态的改变。这本书对类、继承的描述很特别。总体值得一看,过几天二刷……
下载
收藏