V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
WildCat
V2EX  ›  问与答

设计模式的基础书籍求推荐

  •  
  •   WildCat · 2014-05-05 18:23:42 +08:00 · 2832 次点击
    这是一个创建于 3858 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近虽然想更新V2的iOS客户端,但是感觉自己基础深深不足,请教一下介绍设计模式的图书。

    不知道《Head First设计模式》如何?看了下出版年份是07年,不知道是否可以?最近几年是否出现了新的设计模式?
    8 条回复    2014-05-06 10:24:15 +08:00
    Mutoo
        1
    Mutoo  
       2014-05-05 18:47:51 +08:00   ❤️ 1
    貌似23种设计模式从90年代由 GoF 提出来后,就没有增加过。不过在不同领域的应用会很不相同。

    前段时间阅读了 Game Programming Patterns
    里面介绍了游戏中常用的模式,以及游戏开发领域独有的模式。
    但这不属于GoF,在其它领域也不适用。

    http://gameprogrammingpatterns.com
    Madimo
        2
    Madimo  
       2014-05-05 22:11:23 +08:00   ❤️ 1
    《设计模式解析》这本书不错,目前正在看
    http://book.douban.com/subject/20406704/
    akfish
        3
    akfish  
       2014-05-05 22:20:26 +08:00   ❤️ 1
    就最原始的<Design Patterns>就行,粗读一遍,然后开始撸项目,只拿来当reference用。
    然后你开始看大中型项目的源代码,UI框架的看几个,MVC的App看几个。到后来看项目目录怎么组织的就能知道是什么pattern,反正我是这样的。

    撸几个项目你就发现根本不用刻意去想,写出来的代码自然就是某种pattern。
    正所谓大巧不工,重剑无锋。
    WildCat
        4
    WildCat  
    OP
       2014-05-05 22:24:29 +08:00
    @akfish App求推荐源码,iOS的开源App不太好找啊!谢谢!


    @akfish
    @Mutoo
    谢谢!
    akfish
        5
    akfish  
       2014-05-05 22:35:37 +08:00   ❤️ 1
    @WildCat iOS的没注意过,不用局限于某个平台嘛,也就是各种命名规范和语法不同而已,Design Patterns是超越语言超越平台的存在。
    fityme
        6
    fityme  
       2014-05-05 22:53:36 +08:00   ❤️ 1
    Head first那本还不错,讲的很生动,但是略厚。楼上推荐的设计模式解析相当赞,不过相对而言比Head first更难懂一些(废话少了点儿,语言更简练
    arbipher
        7
    arbipher  
       2014-05-05 23:03:53 +08:00   ❤️ 1
    @Mutoo 我也刚看完《Game Programming Patterns》。HN每周精选推送的,就看了一下。我不写游戏,但是我觉得用游戏做例子挺好理解的。这本书作为Patterns的书,不如作为基础书更好。作者对Compilers、Prototype、Virtual Machine的解释都挺好的。

    此外还看过GoF的原版和《Head First Design Patterns》。

    楼主先看《Head First Design Patterns》就好了。看完不过瘾再看GoF原版,如果看懂了,GoF不看也罢。

    设计模式的核心就是indirection。
    大多数设计模式都在降低耦合,比如从静态绑定推延到动态绑定,比如分离构造函数(factory method),比如分离访问函数(visitor),比如分离逻辑判断(state machine)。
    但是不可能把所有部分全都分离了。另一个重点是预测变化,预测程序可能在什么地方发生变化,为了减少发生这种变化时需要修改的代码,需要降低哪些部分之间的耦合度。
    有些模式只在静态OOP语言中有用途。有些是优化用的,Flyweight。还有些被喷的,比如Singleton。

    结论是如果看了《Head First Design Patterns》,你知道Patterns这玩意的“用意”,就够了。
    sivacohan
        8
    sivacohan  
       2014-05-06 10:24:15 +08:00   ❤️ 1
    看《UNIX编程艺术吧》。
    知其然,知其所以然。
    除了学习设计模式,我们还需要知道设计模式是在什么情况下产生的。目的是解决什么问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2517 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:55 · PVG 23:55 · LAX 07:55 · JFK 10:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.