您的位置:首页 > 其它

单一职责 和 面向对象设计原则

2009-01-06 15:02 183 查看
类的单一职责是面向对象编程原则的5大原则之一:职责表示一种行为,一种功能。类的职责取决于,属于该类的对象在系统中的角色。在进行系统设计时我们是出于什么原因需要有这个类,如果没有这个类对系统有什么影响。

通俗的讲学生的职责是学生老师的职责是教学,也可以说成老师的工作是教学有此我们认为这里说的类的职责也可以说是类的工作。而老师就代表着一种角色他教学的这个职责就代表他需要完成的一个使命。要完成这个使命他需要讲课,批改作业而这个动作就相当于我们在程序中类的方法 ,类的方法和属性就是为了完成这个职责而设置的。

类的单一职责是说一个类应该只做一件事情,如果类中某个方法或属性与它所要完成的职责无关或是为了完成另外的职责那么这样的设计就不符合类的单一职责。而这样的设计的缺点是降低了类的内聚性增强了类的耦合性,另外一个很客观的问题是当我们使用这个类时把我们原本不需要的功能也带到了我们的代码中,从而是文件变大,增加内存开销。

现实中一个人的精力是有限的如果承担的职责过多一种情况是会消减我们完成这些职责的能力,因为这些职责互相影响这个人如果其中一个有变化那就会打乱其他说有的职责需要重新安排工作进度,另外一种情况是职责过多负荷过大会造成压力过大这样对于完成完成我们的所承担的职责也是极其不利的。

上述的这些现象搬到软件开发中同样适用,类的职责越多出现错误的机率越大。由于需求的变更需要修改其中一个职责的方法时和这个职责不想关的类文件也需要重新编译。另外就是如果类的职责过多对于维护和检查错误也会造成一定的负担。如果类的职责定义的很明确的话那么当我们的应用程序发生错误时我们就可以很快的定位到发生错误的类文件。

另外类的单一职责这一原则在公司的内部也有明显的体现如;在一个网络公司中设计师负责设计PS美工负责切图做HTML程序员负责填写代码他们都各思其职分工明确。由于每个人都专注于自己的专业特长所以这样相互协作的工作方式不仅可以明显提高工作效率也大大提高了工作的质量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: