最近小语在学习设计模式,每天沉浸在设计模式的世界里面不可自拔,平常工作写代码也是时刻想着如何套用设计模式,同事们都笑称小语是着了魔了。

这天晚上小语下班吃完饭,躺在床上,又捧着讲解设计模式的书(head first 设计模式、设计模式之禅、Android设计模式与源码分析)开始看了起来,然后看着看着,就睡着了。小语做了一个梦。

在梦中,小语来到了一个奇妙的世界……

小语茫然的看着这个天边有三道圆环,地面上到处流溢出六色霞光的地方,虽然很漂亮,但是对于陌生的地方,心中难免有些忐忑。

这时只听一个憨厚的声音响起:小语,你好啊!小语猛然一惊,在这个世界怎么会有人知道我的名字?
此时,小语身旁不知何时多出一个人来,这是一个身材有点圆滚滚的但是长相却怎么也看不清楚的人,他的脸上好像有一层迷雾,时刻变化着,但是却能看出他有一双明亮的眼睛。

小语看到这个人心中一紧,不免有些警惕的问:你是谁?怎么会知道我的名字?

神秘人看到小语的样子,不免笑了,微笑着说道:你可能还没有认出我,但是我却认识你啊!来!跟我来!我给你介绍一下这个世界。

小语闻言,虽然不想跟他走,但是他对这个世界一无所知,也不知道该怎么办?心想,也许跟着他能有办法离开这个世界,回去地球呢?而且看着他也不像坏人。于是小鱼就跟着神秘人向着远方走去。
神秘人边走边向着小语介绍着这个世界,原来这个世界叫做oop宇宙。

据说是由封装、继承、多态三位创世神所创造,他们创造这个世界之后,为了稳定这片世界不让它解体,便让自己的身体融入了这片世界,所以说封装、继承、多态是构成这片世界的基石,没有他们就没有现在的一切。

三大创世神创造这个世界之后,慢慢的出现了生灵,形成了势力,也就是现在的五大宗一圣地,23家族了。五大宗一圣地:单一宗、里氏宗、隔离宗、依赖宗、迪米特宗和开闭圣地。

23家族:23家族分为
创建型家族,共五个:工厂方法家族、抽象工厂家族、单例家族、建造者家族、原型家族。

结构型家族,有七个:适配器家族、装饰器家族、代理家族、外观家族、桥接家族、组合家族、享元家族。

行为型家族,共十一个:策略家族、模板方法家族、观察者家族、迭代子家族、责任链家族、命令家族、备忘录家族、状态家族、访问者家族、中介者家族、解释器家族。

先说说这五大宗一圣地,由于这片世界处处存在着三大创世神的规则,根据这些规则人们总结出了六大法则,而五大宗一圣地分别对应其中一种法则。

先分别简单介绍一下:

单一宗,顾名思义就是对应单一职责法则 。
单一职责原则(SRP:Single responsibility principle)又称单一功能原则。它规定一个类应该只有一个引起发生变化的原因。
为了方便说明,咱们以后就把法则的英文名字第一个字母称呼宗门名字吧,所以单一宗可以叫做S宗。

里氏宗,对应的就是里氏替换法则 。
里氏替换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现,以后就可以叫里氏宗为L宗

隔离宗,对应的就是接口隔离法则 。
接口隔离原则(Interface Segregation Principle, ISP),客户端不应该依赖它不需要的接口,类间的依赖关系应该建立在最小的接口上,所以隔离宗也可以叫做I宗

依赖宗,对应的就是依赖倒置法则 。
依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合 依赖宗也可以称做D宗

迪米宗,对应的就是迪米特法则。
迪米特原则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP)简单来说,类应该只跟它的直接朋友通信 迪米宗也可以叫做L宗,重名了呢?先不着急这是为了后面方便记忆。

最后一个就是一圣地了,说到这里神秘人不免有些得意。圣地对应的就是开闭法则了 。

开闭原则规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。一圣地也可以叫做O(open close)圣地。

那么五大宗一圣地,他们的法则合起来,首字母排序就可以叫做 solid l 法则,分别对应 单一职责、开闭、里氏替换、接口隔离、依赖倒置、迪米特六大法则。

嗯…开闭法则也没有什么了不起嘛!听起来还没有其他五宗的法则厉害呢!小语说道。为什么她就能成为圣地呢?
神秘人听到小语这么说,就得意的笑笑,说道:这个你以后会知道的,嘿嘿!

小语又问道:这个世界这么多势力,难道不会有纷争么?

神秘人听闻,憨厚的笑了笑然后说道,本来想以后告诉你,不过可以透漏一点消息给你,可以说各大势力是没有纷争的。
为什么呢?那是因为他们有共同的敌人啊!

合则两利,大家对付外来的敌人就够忙了,哪有时间暗地里斗争呢?

what?

你问敌人是谁?

神秘人一脸严肃的说道:是一个叫做change的家伙啊!

程序员内功修炼手册 不定期分享程序员基础知识,大前端知识!想跟博主一块成长的快快关注吧!

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐