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

继承

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

class A {
public:
	...
};


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

对象组合

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

// 引擎class Engine {
public:
    ....
};

// 车类
class Car {
private:
    Engine engine; 

public:
    Car() {
        engine = Engine();
    } 
};

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

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

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

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

原文地址:https://blog.csdn.net/Aoiner/article/details/134695866

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_46986.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注