大话设计模式之单一职责原则
来源:互联网 发布:linux查端口命令 编辑:程序博客网 时间:2024/04/30 01:29
很高兴又在每天的这个时间和大家一起分享自己的学习见解,今天我看了一下大话设计模式里面的单一职责原则,现在就跟大家一起分享一下自己的学习成果:
单一职责的定义:
就一个类而言,应该只有一个引起它变化的原因。
为什么要使用单一职责模式呢:
如果一个类承担的职责过多,就等于把这些职责耦合在了一起,一个职责的变化可能会削弱或者抑制这个类完成他职责的能力。这种耦合会导致脆弱的设计,设计会遭到意想不到的破坏。
现在用俄罗斯方块游戏的设计思路为例:
设计逻辑:
俄罗斯方块方块下落动画原理是画4个小方块,擦掉,然后在在下一行画4个小方块,不断的绘制和擦除就形成了动画效果,所以要有绘制和擦除的代码,除此之外,还有左移,右移,下移,翻转的代码,这些都是函数,当然左移和右移要考虑碰撞问题,下移要考虑消层和堆积问题。
界面设计:
建立一个winform窗体,添加一个用于游戏框的控件,比如一个panel,一个按钮来控制开始,再放一个Timer用于分时动画编程。写代码就是编写Timer_Tick来绘制和擦除方块,并做出消层和堆积判断,再编写控件的键盘事件,控制方块的动作,还需要用些GDI+的技术来绘制和擦除方块。
现在就要考虑如何分层编程了,这也是这一款游戏的关键所在
方块的可移动区域可以用一个二维数组来表示坐标,宽10,高20;比如:int[,]=new int[10,20];那么整个方块移动就只是数组下标的变换,比如原方块在arraysquery=[3,5];上,则下移就变成了arraysquery=[3,6];左移就变成了arraysquery=[2,5];右移就是arraysquery=[4,5];每个数组的值就是是否存在方块的标识,存在为1,不存在为0,这下你该明白了,所谓的碰撞其实是什么。
是否能左移,就是判断arraysquery[x-1,y]是否为1,否则就撞墙了,arraysquery[x,y+1]是否为1,则说明堆积了,所谓堆积只不过是判断arraysquery[x,y+1]是否为1的过程,如果为一,则arraysquery[x,y]=1,那么消层其实就是arraysquery[x,y]中循环x由0到9,判断arraysquery[x,y]是否为1,是则此行数据清零,将上一层的数组值遍历下移一位。
现在你也许明白了,所谓的游戏逻辑,其实就是数组中每一项值变化的问题,下落,旋转,左移,右移,堆积,碰撞其实都只是数组值的变化,而界面逻辑,不过是窗体类根据数组值进行绘制和擦除,或者根据键盘事件调用数组相应的方法进行变换。由此可见至少应该将该程序分两个类,一个游戏逻辑类,一个窗体类,这样以后如果更换界面,只用重新编写窗体类即可。
由于时间已晚,源码我将在我整理完毕以后通知大家,供大家下载进行研究
感谢大家对Darren博客的支持,大家也可以评论大家一起交流学习,学无止境
源码已经整理完毕,请大家下载源码进行研究:
http://download.csdn.net/detail/fwj380891124/4301746
- 《大话设计模式之单一职责原则》
- 大话设计模式之单一职责原则
- 《大话设计模式》之 单一职责设计原则
- 《大话设计模式》-- 2.单一职责原则
- 大话设计模式-3.单一职责 原则
- 大话设计模式03----单一职责原则
- 大话设计模式----单一职责原则
- 大话设计模式【单一职责原则】
- 大话设计模式-单一职责原则 /封闭开放原则
- 《大话设计模式》——原则:单一职责原则
- 《Android之大话设计模式》--设计原则 第二章:单一职责原则 乔峰VS慕容复
- 大话设计模式之单一职责原则 开放封闭原则 依赖倒转
- 【大话设计模式】笔记——单一职责原则
- 大话设计模式三:单一职责原则(拍摄UFO)
- 大话设计模式 第三章 单一职责原则
- 大话设计模式学习笔记---单一职责原则
- 大话设计模式-第三章 单一职责原则
- 大话设计模式阅读笔记-单一职责原则
- 5.查询数据SELECT
- 对象的引用调用private类型函数的问题
- User authentication
- CDHtmlDialog显示滚动条
- android 模拟器无法上网问题
- 大话设计模式之单一职责原则
- 戏说面向对象程序设计
- Oracle与Google官司的陪审团只发现了9行版权代码
- UILocalNotification实现本地的闹钟提醒的方法。
- asf程序
- 关于MFC项目中使用CDHtmlDialog禁止脚本错误的方法
- 我的C/C++之路-012课(模仿DOS文件复制操作)
- Thrift入门介绍
- REST 简介