设计模式需要遵循的几种设计原则(一)

单一职责原则(SRP)->(以下括号里面的是自己的理解,其他的为摘抄)
准确的解释就是:对于一个类而言,应该仅有一个引起它变化的原因.
解决问题:实际开发中,如果一个类承担的职责过多,就等于是把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其它职责的能力.这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏.
(按我的理解就是:假如你在一个类里面写了过多东西,比如在一个Activity里面又要下载又要解析还要设置还要写Adapter,假如你Adapter又需要用到你的类里面其它地方的数据,可能你写的时候还很清晰,过上十天半个月回来一看,瞬间懵逼,改个需求牵一发动全身,这个时候你还能想起来你当时是怎么想的而保证只是一个两三分钟就可以解决的问题不用半个小时乃至更长时间吗?这里其实强调的是高内聚低耦合的思想)

当然,软件设计真正要做的许多内容,就是发现职责并且把那些职责相互分离,其实要去判断是否应该分离出来,也不难,就是如果你能想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责,那么就应该考虑职责的分离.
(分离职责不是任何时候都要去做的,举个例子:现在的手机都有MP3,相机等很多功能,但是论专业MP3比不上专业音响,相机比不过单反,我们为什么还要把这些整合在一起呢?换个思路,假如MP3和单反都可以很方便携带也就不会有那么多问题了)

开放-封闭原则
概念:是说软件实体(类,模块,函数等等)应该是可以扩展的而不是可以修改的,总结为两个特征,一个是说"对于拓展是开放的(Open for extension)",另一个是说,"对于更改是封闭的(Close for modification)."
怎样的设计才能面对需求的改变却可以保持相对的稳定,从而使得系统可以在第一个版本以后不断推出新的版本呢?开放-封闭!!!
举例:公司规定早上九点必须到岗,不允许迟到,但是有几个公司骨干总是因为有事耽搁迟到,怎么解决?"严格执行考勤,迟到罚钱吗?" NO!大家之所以到不了肯定有不得已的苦衷,假如这样,人心肯定不齐."那么让有特殊情况的人打报告,允许迟到?" NO! 你问过那些不迟到的人吗?其实仔细想想,思考一下我们关注的是什么.
老板会在乎你迟到吗?答案是否定的,老板只关心你能不能工作够8个小时,确切的来说,老板关心的是你能不能完成业绩目标,这么一想,解决方法就很多了,比如弹性工作,每个月允许迟到几次,来得晚下班补,这其实就是对工作时间或者业绩成效的修给关闭(必须工作8小时或者必须达到什么业绩要求),对时间制度拓展的开放(修改上班时间这个接口,多提供几种方案).
这时你可能还有疑问,那么怎么才能保证绝对的对修改关闭呢?事实上,绝对的修改关闭是不可能的,无论模块多么的封闭,都会存在一些无法对之封闭的变化.既然不可能完全封闭,设计人员必须对于它设计的模块应该对哪种变化封闭做出选择.他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化,等到变化发生时立即采取行动,
在我们最初编写代码的时候,假设变化不会发生,当变化发生时,我们就创建抽象来隔离以后发生同样类型的变化,总而言之,面对需求,对程序的改动是通过增加新代码进行的,而不是修改现有的代码.(看起来可能有点儿绕,多看几遍慢慢理解吧,对自己说!)
下面还有几个概念:
并不是什么时候应对变化解决起来都是容易的,我们希望的是在开发工作展开不久的时候就能发现可能发生的变化,查明可能发生的变化所等待的时间越长,要创建正确的抽象就越困难.
最后,终于快敲完了,也到了核心了:
开放-封闭原则是面向对象的核心所在,遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护,可拓展,可复用,灵活性好.开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象,然而,对于应用程序中的每个部分都刻意的进行抽象同样不是一个好主意,拒绝不成熟的抽象和抽象本身同样重要,切记!切记!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容