[Unity设计模式与游戏开发]前言

前言

做了几年开发之后,发现不同时期对设计模式的理解会不同,刚毕业的时候看《大话设计模式》的感觉就是我平时写的代码也就是菜鸟么,然后菜鸟经过老鸟的指点之后对代码进行优化,很佩服老鸟的代码框架设计能力,但轮到自己设计功能的时候自己却不会用设计模式,或者说当时看设计模式只是浮于表面的“懂”。再过一两年看设计模式有了那么一些感觉,面试的时候或许能说出几个常用的,但还是体会的不够深,没能进行融会贯通。现在决定在回顾一遍设计模式,并将其跟游戏设计和框架开发结合起来思考学习。设计模式就好比武侠里面的高深的武功秘籍,还记得天龙八部里有那么一段场景,在缥缈峰的石壁上刻着北冥神功,大伙看到的时候就感觉如获至宝,感觉是获得了天山童姥的高级武功,然后就练了起来,除了获得无崖子70年功力的虚竹练了之后神清气爽其他人都感觉走火入魔浑身难受,其实我在刚毕业的时候看github上开源的框架就有这感觉,很惊叹大牛写的框架,但自己学习起来特别吃力,头冒虚汗,其实说到底还是因为当初的功底不够,设计模式我就类比成高深的武功秘籍,不同level的开发者学习它会有不同的见解和收获。在平时工作中,时不时的也会得到老大的指点,代码怎样写才更好,其实code review大厂里面是特别重视的,尤其是顶尖大厂,code review对初级开发者来说也是进步最快的学习方式之一,因为只有当自己写出了不好的代码,知道为什么不好,为什么老大指点的方法比原本自己写的代码好,这样对比学习之后才会对好代码有更深的体会。如果没有一个导师指点你代码的问题,那么你年复一年的在写烂代码,N年过去那你只是一个业务上的码农,熟练工而已,难以达到架构师的水平。

设计模式理解层次

  1. 第1层:刚开始学编程不久,听说过什么是设计模式,或者能说出一些设计模式名词
  2. 第2层:有很长时间的编程经验,自己写了很多代码,其中用到了设计模式,但自己却不知道
  3. 第3层:学习过了设计模式,发现自己已经在使用了,并且发现了一些新的设计模式挺好用的
  4. 第4层:阅读了很多别人写的源代码和框架,在其中看到别人设计模式,并且能够林慧设计模式的精妙和带来的好处
  5. 第5层:代码写着写着,自己都没有意识到使用了设计模式,并且熟练的写了出来

这就好比习武之人对应的不同的境界:
第一境界:利剑,“凌厉刚猛,无坚不摧,弱冠前以之河朔群雄争锋。”
第二境界:软剑,“紫薇软剑,三十岁前所用,误伤义士不详,乃弃之深谷。”
第三境界:重剑,“重剑无锋,大巧不工。四十岁前执之纵横天下。”
第四境界:木剑,“四十岁后,不滞于物,草木竹石均可为剑。”
第五境界:无剑,“自此精修,渐进于无剑胜有剑之境。”

第五境界应该是"扫地僧"那种无敌的境地,你到哪一层阶段了呢?

为什么要学习设计模式

编码是程序员的看家本领,大厂(BAT)这种都比较重视编程基本功,例如设计模式和算法,为什么呢?算法是让我们写出高效的代码,而设计模式就是让我们写出优雅的代码。至于什么是优雅的代码?就是从可扩展性、可读性、高内聚低耦合等角度去衡量,程序天天的工作就是写代码,要是代码写不好,最低本的看家本领都练不好,对自己的工作,自己的信心或多或少都会造成一定的影响,如果写一段好代码,相信你会心情舒畅并且很乐意跟其他人分享。如果成天堆砌烂代码,不仅怕被同事review而且或许会被同事dis。我们不能仅仅满足于写出“能用”的代码,“能用”的代码谁都会写,只有写出“好用”的代码久而久之才能变成同事眼中的大牛,成为最优秀的那批人。

告别写被人吐槽的烂代码

我自己也不是什么大牛,曾经在一家小公司一段时间,起初因为代码规范的问题,例如:代码不对齐、变量命名随意不规范,甚至还有数字拼音类的变量等这些最基本的编码规范问题充满整个项目,看的特别难受,然后写了几十条编码规范的文档,最终一些同事也有所改善,不过因为长期随意惯了一时半会很难全部纠正。如果在工作中你看到让你眼前一亮的代码的时候,你会莫名的佩服同事的编码功底,然后对其产生好感,反之,如果你看到不好的代码的时候,你嘴上或许不会说,但心里一定是吐槽的,哪怕这个人业务功能开发做的再快也很难让你信服。所以我们平时要养成优化代码的习惯,其实谁都不想写烂代码,限于自身变成功底或许我们无意识的写出了烂代码,如果被同事指出要乐于接受改正,然后在着手下代码之前花一段时间思考一下设计,刻意锻炼一段时间,让自己养成这种意识,久而久之会成为习惯,不经意的就会写出好的代码,能作为同事学习和临摹的典范,成为自己引以为豪的亮点之一。

如何评价代码的好坏

我们只有知道什么样的代码是好代码的前提下才能写出好代码,下面有一些专业名词:
高内聚低耦合、简单易用、灵活可扩展、可读易维护、模块化、安全性、兼容性、健壮性、可用性、稳定性等等,哪个名词不同的可以百度查询。只有知道这些评判标准,我们才能去评判代码的好坏。设计模式就是基于这些标准而小结的编程范式,所以说深入理解了设计模式才能使我们写出更好的代码。

如何学习设计模式

我对如何学习一门技能理解就是多读多写多小结,读:就是多读书,多读相关的文章,写:就是多写代码,勤加练习,小结:小结是我特别看重的一个环节,小结其实是一个知识的回顾和整理,能够巩固所学并且融入自己的思考,还方便日后回看和复习。所谓好记性不如烂笔头的说法还是有一定道理的,行业中我佩服的一些90后程序员,如乐乐,浅陌,李华明等他们都有一个共性就是特别爱写文章小结,所以说学习的时候小结很重要。

设计模式有哪些内容

七大原则

原本下面五大原则我是死记硬背的,然后发现一段时间之后就容易忘记,其实五大原则有一个单词solid方便记忆。

  • SOLID原则-SRP 单一职责原则
  • SOLID原则-OCP 开放封闭原则
  • SOLID原则-LSP 里氏替换原则
  • SOLID原则-ISP 接口隔离原则
  • SOLID原则-DIP 依赖倒置原则

还有两个合成复用原则和迪米特法则,下文会对这些原则进行小结。

三大类型

由创建型、结构型、行为型组成的23中设计模式

创建型

单例模式、抽象工厂模式、工厂模式、建造者模式、原型模式

结构型

代理模式、桥接模式、装饰者模式、适配器模式、组合模式、外观模式、享元模式

行为型

观察者模式、模板方法模式、策略模式、责任链模式、迭代器模式、状态模式、访问者模式、备忘录模式、命令模式、解释器模式、中介者模式。

注意:不同书籍上对分类和名称略有差别。

参考

  • 王争《设计模式之美》
  • 韩顺平《Java设计模式》
  • 蔡升达《设计模式与游戏完美开发》
  • 捞月亮的猴子

设计模式系列教程汇总

http://dingxiaowei.cn/tags/设计模式/

教程代码下载

https://github.com/dingxiaowei/UnityDesignPatterns

你可能感兴趣的:(Unity3D,设计模式)