码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 设计模式中继承和组合的总结


    一、什么是继承

    继承就是子类继承父类的特征和行为,使得子类具有和父类一样的属性和方法,在Java中通过extends关键字来实现继承。

    优点

    1. 继承最大的好处是可以代码复用。针对多个类有相同的属性和方法,可以将这些相同代码抽取出来形成统一父类,后续只需要继承该父类就能使用这些属性和方法,可以避免代码冗余,实现代码复用。
    2. 继承能实现多态特性。继承父类的方法,子类可以根据自己的需求重写父类方法,这是Java的多态带来的便利。
    3. 继承模式表明的是is-a关系,表明子类是父类的一种类型,可以用来约束父类和子类的关系。

    缺点

    1. 类间的层次变深会影响代码的可读性和可维护性。当类间的层次达到3层或3层以上时,需要确定自身类的属性和方法就会比较麻烦。
    2. 子类会继承了父类的所有属性和方法,即使没有使用也会继承,容易造成自身属性的膨胀。

    二、什么是组合

    组合是对现有对象进行拼装组合实现更复杂的功能,在Java中通过引用其他的类做自身的属性实现类间的组合。

    优点

    1. 组合模式表明的是has-a的关系,表明自身这个类包含其他类的关系。
    2. 继承的特性可以通过组合、接口、委托三个技术手段来达成。除此之外,利用组合还能解决层次过深、过复杂的继承关系影响代码可维护性的问题。
    3. 组合的层级关系更少,类间的耦合性更低,便于代码维护和阅读。

    缺点

    1. 将继承改为组合,意味着需要进行更细粒度的拆分,势必会产生更多的类和接口,类的数量增加会增加代码维护成本。

    三、总结

    1. 面向对象程序的设计原则是:组合优于继承,多用组合少用继承。
    2. 但在实际的开发过程中,需要根据具体情况来选择继承还是组合:当类间的关系层次较浅(不多于3层),类间的联系也比较稳定,建议采用继承的模式,否则采用组合的模式更好。

      本文由博客一文多发平台 OpenWrite 发布!

  • 相关阅读:
    Springboot项目升级2.2.x升至2.7.x
    【笔试题】【day27】
    【Java】— —实现人物对象的增、删、改、查(注:对象的删除以逻辑删除为主,在person类中设置“删除状态字段”,字删除该字段时,将状态改为有效。)
    面渣逆袭:二十二图、八千字、二十问,彻底搞定MyBatis!
    vue 简介 (MVVM介绍,超详细)
    【MAPBOX基础功能】16、mapbox叠加图片图层到地图上
    Linux内存泄露案例分析和内存管理分享
    资源受限MCU Flash空间占用优化
    SeaTunnel 2.3.4 Cluster in K8S
    nodejs事件循环
  • 原文地址:https://blog.csdn.net/ynkimage/article/details/134023479
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号