您的位置:首页 > 其它

我对设计模式的学习和实践的思考...

2008-03-11 23:48 330 查看
因为最近在做一些设计上的工作, 所以决定开始系统地去接触设计模式。所以就在这里对自己学习设计模式做一下初步计划和分析。同时也可以和几个朋友做些简单地学习交流~ 我做个榜样先吧 XD

设计模式-经验者的提高开发效率的工具
从我的角度上看, 使用设计模式的前提条件初步可以列以下几点:

有一定开发经验

深刻体会过杂乱无章代码无法管理和维护痛苦

希望改善或者重构提高代码复用度

我个人认为, 这些学习模式的必要前提。
不知道在什么地方看过这样的说法... 没有10W(具体忘了)行以上的的编码量免谈设计模式。
这样的说法可能有偏激一些,不过也不过分, 写几个简单的小功能小Demo什么的程序根本就不会感受到随着项目的增大,大量不可重用的垃圾代码带来的越来越难以改动和维护的烦恼。
你是否有这样的感觉,为了赶下进度,写了些垃圾代码,最后这些代码带来了更多的烦恼。测试的时候谢谢还好,但做为主程序的代码的话就很那啥了, 我见过一个同事写过5K行的switch...case, 这样的代码叫你维护起来不直接在地上爬了... XD

不要盲目地使用
就像有些人喜欢跟风新技术一样, 不少人也喜欢盲目地在自己的代码中使用大量设计模式。但在使用设计模式的时候根本就没深入考虑使用的理由和进行分析决策。
拿我自己举个例子:
一直我都只是很肤浅地使用些设计模式。甚至出现过为了使用而使用的情况。结果是用了设计模式解决了那个问题。后来发现我把2个模式的用法给弄反了...
所以我建议没弄清楚前不要太轻易地在项目中使用设计模式。

先了解要使用的模式
在使用某个设计模式前最好先对该模式有足够了解, 并确定该模式是否适合我们的情况。
如果发现适合的话应该先简单地实现该模式并进行一些测试工作再加入到你的项目中。

如何阅读《GOF》? 重点在索引介绍章节
在书中提供几种阅读的方法, 但不管是那种, 我们都应该很认真地弄清楚第一章节的内容。并结合自己的开发不断回顾。
估计包括我在外的很多新手都没有注意到, 最精髓的部分还是在如何去了解和分析模式。前面都没看懂就去直接看后面的实例当然就会出现盲目的情况了。
设计模式不是一次就能读完的书, 你可以把它看成一本参考书。 它是来自他人的优秀经验。
我现在就把设计模式的基本条目做为我开发时考虑问题的标准模板。

同样应该有自己的想法和方案
我们学习设计模式的目的不仅仅是简单地使用设计模式, 而是要学会

如何去设计

了解如何通过参考优秀的成熟模式来规范化自己的设计和思维。

不应该只是被动的使用, 而应该更主动地考虑更多的方法和我们开发中可重用的设计。
同样是一本书,但不同的人也会获得不同的效果。就看你怎么去使用它了。
用于游戏开发的设计模式
除了《GOF》提供了23种通用的模式, 但是并不提供某个专业领域的设计模式。 就拿我们游戏领域来说吧, 也有很多业界公认的设计模式, 比如 FSM, RBS, BehaviorTree, EntitySystem等。你可以在《Gems》中找到很多例子。

通过设计模式可以学到什么?
通过学习设计模式 我们可以

规范化自己的方法和设计

了解软件工程中成熟的设计方案

同时学会如何去设计一个健壮的系统。

--------------实践分割线------------------------
我的学习与实践
下面这段时间我会断断续续地把23种设计模式都用我自己的认识和方法实现一遍。
学习理由
我的理由很简单, 减少重复工作和应对变态策划。
学习目的
通过实践熟练掌握和使用基本设计模式。
学习目标

构建一套我自己的Pattern库。

适合游戏开发使用的Pattern库。

懂得如何进行可重用的设计和开发。

学习方法
我会采用循序渐进不断进化的方法来进行学习。 也就是说,代码是随着我的认识不断地进化和改进的。
我会参考和摘抄成熟的实现, 但摘抄的原则是我已经了解该实现的原理和机制, 并能熟练使用。
在使用中学习设计模式。
收尾
需要注意的是这只是自我发掘性质的文章, 并没有严格的规范和检验。
通过这样的写作也有助于挖掘自己潜性知识并获得提高...
好了,关于设计模式的学习今天就先到这里。
嘛...有时间继续~~ -_-b 各位也加油吧....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: