微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

2单一职责原则和3开放-封闭原则

单一职责原则SRP:SingleResponsibility Principle,就一个类而言,应该仅有一个引起它变化的原因。

如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的功能。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。正如一个人可能担负着很多重要的职责,那么对他而言合理分配时间去做各项任务就变得尤为重要。若有两种以上的事情在某一时间内由一个人去解决,那么他做任何一件事都会影响做另一件事的效果。所以必须GTD

软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。其实要去判断是否应该分离出类来,就是如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。当然GTD并不是要分离出多个自我来,而是分配多个时间段,在每个时间段内只有一个我。这样就实现了一个一个职责的效果

在编程时,我们要在累的职责分离上多思考,做到单一原则,这样代码才真正易维护、易扩展、易复用、灵活多样。

开放-封闭原则OCP:theOpen-Closed Principle

在软件设计模式中,不能修改但可以扩展的思想是最重要的一种设计原则,即开放-封闭原则:软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。为了面对需求的改变仍可以保持相对稳定,从而使得系统在第一个版本以后不断推出新的版本,就要对扩展开放而对更改封闭。在计算器的例子中,我们通过增加一个抽象的运算类,通过一些面向对象的手段如继承、多态等来隔离具体算法与client的耦合,如果要增加其他运算比如开根,不需要更改已有具体算法类和client,而是增加子类即可。所以,面对程序的改动是通过增加代码进行的,而不是更改现有的代码,这就是开放-封闭原则的精神所在。所以,无论模块是多么的封闭,都会存在一些无法对之封闭的变化。既然不能完全封闭,设计人员必须对模块应该对哪种变化封闭做出选择,猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。但是应该仅对程序中频繁变化的那些部分做出抽象,也不能对每个部分都刻意进行抽象。

原文地址:https://www.jb51.cc/javaschema/286393.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐