对继承和对象组合的理解

news/2024/10/25 17:24:36/

对象组合和继承是面向对象编程中两种常见的代码复用和组织结构的方式,在设计模式中也经常出现

继承

是指一个类(称为子类或派生类)从另一个类(称为父类或基类)继承属性和方法,并可以扩展或修改它们。通过继承,子类可以重用父类的代码和行为,同时还可以添加新的功能或修改现有功能。继承是一种"is-a"关系,表示子类是父类的一种特殊类型。继承能够提供代码重用和多态性的特性,可以简化代码的编写和管理

class A {
public:...
};class a :public A {
public:....
};

对象组合

是指一个对象通过包含其他对象作为其成员变量来实现功能。这种方式可以将多个对象组合在一起,形成更复杂的对象结构,从而实现更高层次的功能。对象组合是一种"has-a"关系,表示一个对象包含另一个对象,但并不是继承自它。通过对象组合,可以将不同的对象组合成一个更大的整体,每个对象负责自己的功能,使得代码更加模块化和可维护。

// 引擎类
class Engine {
public:....
};// 车类
class Car {
private:Engine engine; public:Car() {engine = Engine();} 
};

选择对象组合还是继承取决于具体的应用场景和需求。一般来说,推荐使用对象组合来实现功能的组合,因为它更灵活、松耦合,避免了继承可能带来的复杂性和耦合性。继承应该用于表示"是一个"关系,当子类与父类之间具有明确的继承关系时,且需要共享或修改父类的属性和方法时,才考虑使用继承。

在学习设计模式时 下面两种协作模式有相对体现

模板方法模式是一种基于继承的设计模式,用于定义一个算法的步骤,并将其中一些步骤延迟到子类中实现。模板方法模式通过把不变行为搬移到父类,去除子类中的重复代码,提供了一种代码复用的方法,同时也保证了子类中的行为是一致的。这种模式中,具体实现的细节由子类来完成,而抽象类则负责控制算法的流程。

策略模式是一种基于对象组合的设计模式,用于将算法的实现与调用者分离开来,使得它们可以独立地变化。策略模式通过将算法封装成一个个独立的策略对象,让客户端可以在运行时动态地选择使用哪种策略,从而达到灵活地改变对象的行为的效果。这种模式中,客户端根据需要选择所需的策略对象,而策略对象则负责实现具体的算法。


http://www.ppmy.cn/news/1249858.html

相关文章

【Android知识笔记】架构专题(一)

什么是 MVC 其实我们日常开发中的Activity,Fragment和XML界面就相当于是一个MVC的架构模式,但往往Activity中需要处理绑定UI,用户交互,以及数据处理。 这种开发方式的缺点就是业务量复杂的时候一个Activity过于臃肿。但是页面结构不复杂的情况下使用这种方式就会显得很简…

[Java]JUC并发编程

JUC并发编程 一、什么是JUC 使用到 java.util 工具包、包、分类 二、线程和进程 进程:一个正在运行的程序,QQ.exe Music.exe 程序的集合; 一个进程往往可以包含多个线程,至少包含一个! Java默认有两个线程&#x…

linux /proc 文件系统

/proc系统是一个伪文件系统,它只存在内存当中,而不占用外存空间,以文件系统的方式为内核与进程提供通信的接口。 /proc目录下有很多以数字命名的目录,每个数字代表进程号PID它们是进程目录。系统中当前运行的每一个进程在/proc下都…

Android进阶之路 - TextView文本渐变

那天做需求的时候,遇到一个小功能,建立在前人栽树,后人乘凉的情况下,仅用片刻就写完了;说来惭愧,我以前并未写过文本渐变的需求,脑中也仅有一个shape渐变带来的大概思路,回头来看想着…

Apache Flink(三):Flink核心特性及应用场景

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹…

版本控制系统Git学习笔记-Git基本知识介绍

目录 前言一、版本控制系统1.1 什么是版本控制系统1.2 本地版本控制系统1.3 集中化的版本控制系统1.3 分布式版本控制系统 二、Git简介2.1 数据处理方式2.2 几个特点2.2.1 几乎所有操作都是本地执行2.2.2 Git保证完整性2.2.3 Git一般只添加数据 2.3 Git中文件状态2.3.1 三种文件…

Spring的事务传播行为

文章目录 说一下Spring的事务传播行为 今天来和大家聊聊spring中使用的事务传播行为, 说一下Spring的事务传播行为 spring事务的传播行为说的是,当多个事务同时存在的时候,spring如何处理这些事务的行为。 ① PROPAGATION_REQUIRED&#xf…

实施工程师运维工程师面试题

Linux 1.请使用命令行拉取SFTP服务器/data/20221108/123.csv 文件,到本机一/data/20221108目录中。 使用命令行拉取SFTP服务器文件到本机指定目录,可以使用sftp命令。假设SFTP服务器的IP地址为192.168.1.100,用户名为username,密…