设计模式六原则

1.单一职责原则:
2.依赖倒置原则:
3.里氏替换原则:
4.接口隔离原则:
5.迪米特法则:
6.开闭原则:

上述是设计模式核心的六个法则,其实可以换一种更准确的说法:
一个指导思想,5个指导方针(注意指导思想和指导方针的区别);
下面会解释上述说法的具体意思:
一个指导思想:
开闭原则:初始定义为一个软件实体(类,方法,模块)应该对扩展开放,对修改关闭;简单在代码上的体现为你设计的代码结构,当需求更改时更多的是可以采用继承或实现的方式来完成,而不应该采用直接修改源代码的方式,当然低层模块的改动需要高层模块进行耦合除外。
开闭原则的核心就是是一个软件更加灵活,具体的表现为高内聚,低耦合。其中的高内聚就是说一个软件实体,尽量保持自身的高度纯洁性,纯洁性体现在三方面:
1.简单:即实体应该保持简单,单一职责;
2.契约:向其他实体公布的共有接口属于当前实体对外部的承诺,不能随意修改契约;
3.封装性:就是除非逼不得已,就不要透露自己的小秘密(实现细节)给别人(其他实体),仅提供给别人功能性的接口就行了;
五个指导方针:为了实现开闭原则而设计的五个实现策略;
1.单一指责原则:应该有且仅有一个原因引起类的变更;简单的说就是一个类或者接口的职责应该单一,一个类负责一件事情,对应到方法上是一个方法应该处理一个事情,这样可以提高这个方法的重用率,使代码更加简洁,且易于维护;该原则难点在于如何定义职责(需要对业务不断分析),职责的粒度大小如何去把控(在项目实现和完美代码之间折中);
2.依赖倒置原则:类间的依赖关系尽量建立在接口和抽象类中;可以解析为一下两点:
2.1高层模块不应该依赖于低层模块,两者都依赖于其抽象;
2.2抽象不应该依赖于细节,细节应该依赖于抽象;
简单的理解就是,类之间的关系应该建立在更高层的抽象层(接口或者抽象类)中,实现类中不发生直接的关系建立;这里的类之间的关系是指类A中使用了类B,那么类B和类A就存在联系;及类A依赖于类B;
3.接口隔离原则:类之间的依赖关系应该建立在最小的接口上;
即:接口要尽量小,这里的难点在于怎么样算尽量小呢?这里需要考虑到单一指责原则和代码的可维护性;一个接口要在单一职责原则基础上,缩小接口,尽量少提供给外部冗余的承诺和尽量实现代码的重用;
4.迪米特法则:最少知识原则,即一个对象应该对自己有依赖的关系类的内部实现指导的最少,尽量实现高内聚和低耦合;
即:类尽量之和自己的直接朋友产生关系,所谓的直接朋友指类A的成员变量或者在方法的输入输出参数中的包含类B,那么类B就是类A的直接朋友;同时尽量少提供公开的方法、相关的成员以及实现细节;
5.里氏替换法则:如果对每一个类型为S的对象s1,都有类型为T的对象t1,使得以T定义的所有程序P在所有的对象s1都替换成t1时,程序p的行为没有发生变化,那么类型S是类型T的子类型;通俗的说就是所有能出现父类的地方子类就是可以出现,并且子类的出现不会导致出现错误 和异常;但是反过来就不行;里氏替换法则主要考虑在子类继承父类的相关注意事项,子类不能歪曲父类的意图(当子类不能完全实现父类的方法的时候/或者重载了一个方法),当发现子类和父类在业务逻辑上出现了分歧时,应该改变他们之间的关系,可以修改为其他依赖关系;

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

推荐阅读更多精彩内容