您的位置:首页 > 其它

大话设计模式 第三章 单一职责原则

2013-12-10 23:26 246 查看
定义: 就一个类而言 ,应该仅有一个引起它变化的原因

我们在编程时,很自然地会给一个类加各种各样的功能,比如我们写一个窗体应用程序,会在其中加入某种商业运算的算法,比如数据库访问等,维护麻烦,复用不可能,也缺乏灵活性

举例:方块游戏的设计(3.5)

以俄罗斯方块为例

下落、旋转、碰撞判断、移动、堆积等逻辑 应该与 界面分开

如果一个类承担的职责过多,就等于把这些职责耦合在一起, 一个职责的变化会削弱或抑制这个类完成其他类的能力。 这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。

方块的可以动的游戏区域,可以设计为一个二维数组 宽10,高20   比如 int[] arraySquare=new int[10][20], 那么整个方块的移动就是数组的下标变化

比如 原方块在arraySquare[3][5]上,下移就是arraySquare[3][6] 如果下移的时候按了左键,那么就是arraySquare[2][6].

每个数组的值就是是否存在方块的标志,存在为1,不存在为0. 所谓的碰撞判断就是: 比如能否左移,就是判断arraySquare[x][y]中的x-1是否小于0或者arraySquare[x-1][y]是否等于1

所谓的堆积,就是判断arraySquare[x][y+1]是否等于1,如果是,则把arraySquare[x][y]=1

消层,就是判断arraySquare[x][y]将x从0循环到9,判断arraySquare[x][y]是否都等于1,是则都清零,并将上方的数组值遍历下移一位

因此,所谓游戏逻辑,就是数字的每一项值变化的过程。

界面表示逻辑,是根据数组的数据进行绘制和擦出,或者根据键盘命令调用数组的响应方法进行改变。

因此,此程序可分为两个类,一个是游戏逻辑的类,一个是窗体类。

如果你能够想到多于一个地动机去改变一个类,那么这个类有多于一个的职责
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: