面向对象设计原则(个人总结,仅供参考)

1、依赖倒置原则


高层模块不应该依赖于底层模块,两者都应该依赖于抽象。抽象不应该依赖于实现细节,实现细节应该依赖于抽象。

简而言之就是都应该只依赖于抽象。

因为抽象是对一类事物在共性上的一种提取,他是一个稳定的存在。依赖于它的模块和细节并不用担心他会发生变化,从而使得自身的模块和细节无法使用的情况。

2、开放封闭原则


对拓展开放,对修改关闭。

因为面向对象是基于一个稳定点来应对需求的变化的。很多模块都依赖了这个稳定点来运转的。如果对这个稳定点进行了修改,那会使得这个稳定点变得不太稳定。而这种修改,就很可能会使得依赖于它的模块无法正常使用。

因此,我们要关闭修改,以拓展的方式来应对需求的变化。

3、单一职责原则


一个类应该仅有一个引起它变化的原因。

当一个类的职责(需要处理的事情)太多的时候,会导致它和许多、类许多模块间产生依赖关系。造成一种紧耦合的情况,更坏的是,一旦这个类出现问题,可能第一时间无法得知到底是它的哪一种职责引发的。不利于代码的维护。

4、里氏替换原则


子类必须替换掉它的基类。

其实就是is-a关系的另外一种说法。相当于基类提供了方法和字段,在将子类替换成基类后,依然能够正常运转。假如无法正常运转,那说明他们之间不应该是is-a(继承)这种关系。

5、接口隔离原则


不应该强迫客户程序依赖它们不用的方法。

意思就是不要一味地public方法,应该将需要提供给客户端使用的接口给pulic出去,将没必要提供给用户的接口给private或protected隐藏起来。从而避免客户端之间紧耦合的一种情况。

6、合成复用原则


优先使用对象组合,而非类继承。

对于继承而言,实际上父类给子类暴露的东西是非常多的,它某种意义上破坏了类的封装性,从而使得子类与父类间高度耦合。

而对于组合来说,当前的类不需要了解组合的这个类的内部信息,两者间只需要制定好合适的接口就可以了。它的耦合度相对而言更低。

因此要尽量多用组合,少用继承。

7、封装变化点


要将变化的东西(对象)封装起来,使得设计人员在对这些变化的东西(对象)进行修改的时候,不会对外部产生不良的影响。

软件大师肯特.贝克曾说过:需求变化就如同一只调皮的小猫,我们应该把她关紧笼子里,让她在笼子里面调皮。

而封装变化点,实际上就是为这些变化的东西制造一个笼子,让它们在这里面变化。

8、面向接口编程


要针对接口编程,而不是针对实现编程。

意思就说,我们在使用许多对象共有的一个方法的时候,不建议(因为对于常用的数据结构,还是有必要声明成它的具体类型)声明这个对象的具体类型,而是应该声明成我们希望使用的这个方法所对应的接口。从而降低客户端和类设计端的耦合关系。

9、迪米特法则


只与你的直接朋友交谈,不跟“陌生人”说话。

意思就是说,如果我能够通过我的朋友来和陌生人进行交谈,那我就不要直接和陌生人交谈,从而降低系统间的耦合关系。

但这个法则没必要严格遵循。

软件大师马丁.福勒在他的《重构》中指出:随着受托类的特性(功能)越来越多,更多的转发函数会使人烦躁。服务类完全变成了一个中间人,此时就应该让客户直接调用受托类。(这个味道通常在人们狂热地遵循迪米特法则时悄然出现。我总觉得,如果这条法则当初叫做“偶尔有用的迪米特建议”,如今能少很多烦恼。)

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

推荐阅读更多精彩内容