【设计模式】六大原则

我朋友小A开了一家自助水果超市,无售货员。顾客装好水果后,只需在结账台扫描一下水果,电脑就会自动识别水果,再自动计算出总价。顾客看到应付价格后再通过扫描二维码的形式付款。


  • 单一职责原则(只有一个功能)
why
如果类的职责过多,其会相互干扰,从而可能会造成功能的不稳定性。而且,当想要更改时,也容易造成结构的破坏。
what
引起类变化的原因只有一个
  • 开放-封闭原则(一国两制)
why
少改代码。
what
对软件实体(类,模块,函数等)应该可以扩展,但不能修改。即对源代码不能修改,但可以扩展。举个栗子,我国实行的一国两制就是对“原来的不能修改,但可扩展”的体现。
  • 依赖倒转原则(相对独立)
why
还拿小A的水果店为例,先开始只卖中国产的,结果想扩大店面,所以就进口些“澳大利亚水果”。先开始系统中只有对苹果,梨等的识别和结算,这时要加上牛油果等的。所以说是要求增加一些对等的功能。
what
不好的代码会需要改好多处,而好的代码只需改对应的一块代码即可。所以说编码时要针对接口,而不是实现;要针对抽象(接口、抽象类),而不是细节。这在面向对象中叫“高内聚 低耦合”。
再举些例子,用以加深理解:
例子1:如果电脑中的硬盘坏了,那只需换硬盘即可,而不用把整个电脑都换了,这也符合依赖倒转原则。
例子2:高层模块不符合要求了改高层模块,而不用动底层模块;反之亦然。
例子3:这也像一些为了孩子不离婚的夫妻,对方在外面再怎么找小三,OK,没关系。但是在家里就会有联系,而这个家里就是“接口”。不知道理解的对不对
  • 里氏代换原则(儿子要能继承父亲的公司)
why
小A老了,想把水果店继承给儿子。那有什么条件能保证水果店继续开下去呢?最简单的一点就是儿子要有父亲的经营能力。这是最基本的。至于儿子会不会再在此基础上定个“周年庆”等活动来促销,这又是一回事了。
what
子类拥有父类的全部属性和功能。所以在软件里面,让子类替换父类,程序的行为无变化
  • 迪米特法则(类之间不交流)
why
降低类之间的耦合,增强复用性
what
两个类之间不直接发生关系,如果需要联系,找第三者协调。
举个栗子,为提高部门的工作效率,部员A和部员B在有工作时,自身不协调,而是去找主管分配。
  • 接口隔离原则(接口尽量小
why
提高内聚,减少对外交互,使接口用最少的方法去完成最多的事情。
what
一个类对另一个类的依赖应该建立在最小的接口上

小结

原则是一根线,我们在开发时要尽量围绕在其周围。既不要刻板,也不要脱离

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

卡夫卡的熊kfk

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

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

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

打赏作者

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

抵扣说明:

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

余额充值