为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第8天+合成(组合)/聚合复用原则 和 设计模式有七大基本原则总结

标签:
设计模式

课程名称:Java设计模式精讲 Debug方式+内存分析

课程章节:第3章 软件设计七大原则

主讲老师:Geely

课程内容:

图片描述
图片描述
合成(组合)/聚合复用原则

问题1)定义

尽量使用对象组合/聚合,而不是继承关系达到复用的目的。

问题2)聚合和组合?

聚合 has-a :部分可以独立存在。
组合 contains –a :部分不可以独立存在,部分不存在,整体就不存在。

问题3)组合/聚合和继承的关系?

组合聚合:
优点:黑箱复用(a类包含b类,对于b类是看不见的。)
降低类与类之间的耦合,一个类的变化对其他类造成的影响相对较小。
缺点:对象多。

继承:
优点:白箱复用,修改,扩展性比较好
缺点:破坏包装(因为父类的将实现细节暴露给子类。)

问题4)什么时候使用组合/聚合,继承呢?

继承是 is-a :有很好的扩展性。
比如:所有的员工都继承员工类。继承角色类,

图片描述

设计模式的三个分类

创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。
结构型模式:把类或对象结合在一起形成一个更大的结构。
行为型模式:类和对象如何交互,及划分责任和算法。

软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性,程序的重用性。可以理解为:“世上本来没有设计模式,用的人多了,便总结出了一套设计模式。”

面向对象的设计模式有七大基本原则:

  • 开闭原则(Open Closed Principle,OCP)
  • 单一职责原则(Single Responsibility Principle, SRP)
  • 里氏代换原则(Liskov Substitution Principle,LSP)
  • 依赖倒转原则(Dependency Inversion Principle,DIP)
  • 接口隔离原则(Interface Segregation Principle,ISP)
  • 合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP)
  • 最少知识原则(Least Knowledge Principle,LKP)或者迪米特法则(Law of Demeter,LOD)
    简单理解就是:开闭原则是总纲,它指导我们要对扩展开放,对修改关闭;单一职责原则指导我们实现类要职责单一;里氏替换原则指导我们不要破坏继承体系;依赖倒置原则指导我们要面向接口编程;接口隔离原则指导我们在设计接口的时候要精简单一;迪米特法则指导我们要降低耦合。

设计模式就是通过这七个原则,来指导我们如何做一个好的设计。但是设计模式不是一套“奇技淫巧”,它是一套方法论,一种高内聚、低耦合的设计思想。我们可以在此基础上自由的发挥,甚至设计出自己的一套设计模式。
当然,学习设计模式或者是在工程中实践设计模式,必须深入到某一个特定的业务场景中去,再结合对业务场景的理解和领域模型的建立,才能体会到设计模式思想的精髓。如果脱离具体的业务逻辑去学习或者使用设计模式,那是极其空洞的。接下来我们将通过外卖营销业务的实践,来探讨如何用设计模式来实现可重用、易维护的代码。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消