浅谈设计模式六大基本原则

  • 单一职责原则
    周末恰逢杰帅在家休息,感受安静的清晨,正准备睡个回笼觉,dd将杰帅踢下床对杰帅说:“把屋子扫了,地板拖了,衣服洗了,午饭做了,衣柜理了”
    杰帅只能聋拉着双眼乖乖的去干活,但是杰帅要做的事情太多了,所以搜忙脚乱的,结果衣服没有甩干,洒了一地的水,手沾了水弄湿了衣柜里的衣服,做午饭忘了时间菜全烧糊了。然后只能乖乖的去跪键盘。。。

在这个故事里杰帅就好比是程序中的一个模块。我们尽量不要在一个模块里写过多的业务逻辑,否则业务逻辑之间可能会相互干扰,引起更多的错误。在这个故事中,如果只让杰帅做一件事,估计还是可以做好的,但是同时让杰帅做那么多事,就回出现问题。所以单一职责原则的本质就是将一个复杂的逻辑拆分成多个简单的逻辑,一次来降低复杂度

  • 里氏代换原则
    杰帅喜欢妹子,可以推出杰帅喜欢dd(因为dd是妹子)。但是杰帅喜欢dd,无法推出杰帅喜欢所有的妹子(主要原因可能是不敢)。

里氏代换原则的一个核心思想就是父类能做的事、能去的地方,子类必须也能做、也能去。
从逻辑上举个例子,大前提:我喜欢吃水果。小前提:西瓜是水果。结论:我喜欢吃西瓜。
在这个例子中,西瓜是水果的一种,所以很明显水果是西瓜的父类,所以对父类成立的逻辑对子类也必然成立。但是反过来,我喜欢吃西瓜无法推论出我喜欢吃水果。所以如果一个方法或模块使用了一个子类,那么这个子类不能用其父类代替。里氏代换原则的核心:父亲能做的孩子都能做,孩子能做的父亲不能做,降低耦合度。

  • 开闭原则
    闭原则:杰帅在外边经常受欺负,dd很生气,觉得这样很不合理。于是规定:杰帅只能被dd打,如果有人想要打杰帅,必须和dd说,然后由dd来打杰帅~
    开原则:dd经常觉得杰帅太笨了,琴棋书画不会,洗衣做饭嫌累。所以dd决定让孩子来学习琴棋书画。

开闭原则的核心就是对修改关闭,对扩展开放。
就像是在这个例子中,如果谁都能打杰帅就乱套了,所以规定只能由dd来打杰帅,这样方便管理。这就是对修改关闭。
当我们觉得杰帅的功能太少的时候(琴棋书画不会),我们也不能直接给杰帅增加功能,只能通过扩展的方式(让杰帅的孩子来学)。这样最后总体上杰帅家就有了会亲戚书画的人了。
由于里氏代换原则的存在,在需要杰帅的时候,杰帅的孩子可以替代,所以就解决了杰帅不会琴棋书画的问题~开闭原则的核心:对修改关闭,对扩展开发,依次来减少耦合度。

  • 依赖倒置原则
    杰帅每天在家都听dd指挥,终于有一天杰帅硬气了一回 ~ 杰帅对dd说:“你每天都命令我做这个做那个,传出去我多没面子~ 我不要面子的嘛~ ?”dd想了想觉得杰帅说的确实有道理。于是对杰帅说:“以后每天我就不命令你了 ~ 你每天看小纸条吧 ~ 小纸条上写什么你就做什么,都是小纸条命令你的,和我就木有关系了~”

杰帅一想有道理,于是就答应了。从此以后,每天dd都不会对杰帅呼来唤去了~ 有什么事就往小纸条上写~

杰帅和dd就相当于程序中的两个函数或者两个模块。原本这两个模块是相互依赖的关系(A调用B)。但是这样会有一个问题,就是当一个模块发生修改的时候,总会对相关模块产生影响,为了降低这种影响,人们决定使用依赖倒置原则来降低核心模块间的耦合度。
依赖倒置原则的核心:让原来相互依赖的两个核心模块,变为同时依赖于另一个非核心模块。以此来降低核心模块的耦合度。

  • 接口分离原则
    有一天杰帅对dd说:“我想下楼买菜,回家打游戏,晚上吃排骨&……#%&&#*巴拉巴拉一大堆”,dd对杰帅说,一口气说这么多谁听得懂,一件一件说~

很多的同学在工作初期,喜欢定义一个接口之后,通过传不同的参数做不同的事,最后只有一个接口,但是参数极其复杂。
就像是这个例子中这样,杰帅虽然只说了一句话,但是内容极其复杂,这样明显增加了系统的复杂度。
所以我们需要使用接口分离原则,其实接口分离原则和单一职责原则非常的像,就是每个接口负责的内容尽量单一,不要使用复杂的总接口,以此来降低系统的复杂度。

  • 迪米特法则
    dd为了不让杰帅学坏,平时经常告诫杰帅 :“不要和陌生人说话~”

“不要和陌生人说话”就是迪米特法则的精髓所在,迪米特法则指的就是:除了自身,当前对象的成员,参数,当前对象所创建的对象之外,尽量不要与其他外部实体或模块产生关联(引用或调用),以此来降低系统的耦合度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Theliars

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值