回炉重铸-设计模式的领悟
2016-04-30 21:24
267 查看
整个四月都在回炉重造之前的英雄成长系统,就因为决定换一个方向,累死。回头看看去年,没想到也是4月30号写的博客。。。
重造的过程里,同时在看《head first 设计模式》这本书。作者加了很多有趣的插图进去,以前是很讨厌这么做作的书,但是现在读来觉得没那么累,挺好的,可能是老了吧。。。里面提到的开放-封闭原则很有启发意义。以前写代码,写的很老实,不够偷懒,总是一字一句把策划的文案搬进去,抽象层次不够,搞的人很累。开放-封闭原则就教导,写代码应该对扩展开放,以后策划有新需求,只要在少数几处地方加个入口就行。对修改封闭这个倒是没有想好,策划总是在改案子,而且很多时候改动的幅度很大,怎么实现不修改没想好。目前是抽取了一堆工具函数出来,将策划的需求拼凑成一张表格,然后逐项检查,有新需求加新工具函数。
《head first 设计模式》里还提到了对象工厂和观察者模式。观察者模式用的还是蛮多的,玩家身上会挂一个类似公告板的东西,让各种玩法在上面注册主题。比如玩家升级,充值VIP,发起一次战斗,战斗胜利,完成造兵等等,然后其他新玩法和成就系统就可以监听这些消息了。日常任务、成就系统前后做了两版,具体玩法的代码都不需要修改,这个观察者模式挺好用的。
对象工厂在程序群里其实还被喷过几次,我以前也觉得很多余,尤其是对于Lua这种动态语言来说。没有编译期进行检查,调用接口的代码不跑到就不知道接口对不对。不用工厂,多require几个文件,自己调一下new,没什么区别。现在觉得,抽象一个对象工厂出来,更多是一种减轻心理负担的做法吧。如果一个玩法的文件,里面密密麻麻的require了一堆外部文件,看起来就有点头皮发麻了。现在搞一个100行左右的工厂,将需要的类都放进来,增加创建方法,那么相关玩法的头部就可以简化了。
重造的过程里,同时在看《head first 设计模式》这本书。作者加了很多有趣的插图进去,以前是很讨厌这么做作的书,但是现在读来觉得没那么累,挺好的,可能是老了吧。。。里面提到的开放-封闭原则很有启发意义。以前写代码,写的很老实,不够偷懒,总是一字一句把策划的文案搬进去,抽象层次不够,搞的人很累。开放-封闭原则就教导,写代码应该对扩展开放,以后策划有新需求,只要在少数几处地方加个入口就行。对修改封闭这个倒是没有想好,策划总是在改案子,而且很多时候改动的幅度很大,怎么实现不修改没想好。目前是抽取了一堆工具函数出来,将策划的需求拼凑成一张表格,然后逐项检查,有新需求加新工具函数。
《head first 设计模式》里还提到了对象工厂和观察者模式。观察者模式用的还是蛮多的,玩家身上会挂一个类似公告板的东西,让各种玩法在上面注册主题。比如玩家升级,充值VIP,发起一次战斗,战斗胜利,完成造兵等等,然后其他新玩法和成就系统就可以监听这些消息了。日常任务、成就系统前后做了两版,具体玩法的代码都不需要修改,这个观察者模式挺好用的。
对象工厂在程序群里其实还被喷过几次,我以前也觉得很多余,尤其是对于Lua这种动态语言来说。没有编译期进行检查,调用接口的代码不跑到就不知道接口对不对。不用工厂,多require几个文件,自己调一下new,没什么区别。现在觉得,抽象一个对象工厂出来,更多是一种减轻心理负担的做法吧。如果一个玩法的文件,里面密密麻麻的require了一堆外部文件,看起来就有点头皮发麻了。现在搞一个100行左右的工厂,将需要的类都放进来,增加创建方法,那么相关玩法的头部就可以简化了。
相关文章推荐
- leetcode 101. Symmetric Tree 判断对称树,递归和迭代
- NYOJ 791 Color the fence
- iOS笔记----Hybrid应用基本核心
- 个人工作总结07
- SDUT 2416:Fruit Ninja II
- HDU-4496 D-City (并查集)
- Android NFC
- Qt多线程程序设计
- 树的最大独立集(1初步)
- 课程设计__类和对象的简单使用(构造函数初始化)
- ConcurrentHashMap实现原理
- Log4cpp介绍及使用
- 《Nodejs开发加密货币》之二:Nodejs原来在币圈如此流行?
- 内存操作函数memmove,memcpy,memset
- 构建之法05
- c++ Multisets
- 1053. 住房空置率 (20)
- libevent 构造httpServer
- Qt如何实现多窗口调用
- CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待