[设计模式]合成复用原则

Posted Wecccccccc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[设计模式]合成复用原则相关的知识,希望对你有一定的参考价值。

合成复用原则:继承和组合,优先使用组合。

这样写,每开一种车,就要弄一个新的Person类。
代码如下:

#include <iostream>
using namespace std;

class AbstractCar
{
public:
	virtual void run() = 0;
};

class DaZhong :public AbstractCar
{
public:
	virtual void run()
	{
		cout << "大众车启动" << endl;
	}
};

class TuoLaJi :public AbstractCar
{
public:
	virtual void run()
	{
		cout << "拖拉机启动" << endl;
	}
};

class PersonA:public TuoLaJi
{
public:
	void Doufen()
	{
		run();
	}
};

class PersonB :public DaZhong
{
public:
	void Doufen()
	{
		run();
	}
};

合成复用原则
代码如下:

#include <iostream>
using namespace std;

class AbstractCar
{
public:
	virtual void run() = 0;
};

class DaZhong :public AbstractCar
{
public:
	virtual void run()
	{
		cout << "大众车启动" << endl;
	}
};

class TuoLaJi :public AbstractCar
{
public:
	virtual void run()
	{
		cout << "拖拉机启动" << endl;
	}
};

class Person
{
public:

	void setCar(AbstractCar *car)
	{
		this->car = car;
	}

	

	void Doufeng()
	{
		this->car->run();
		if (this->car != nullptr)
		{
			delete this->car;
		}
		this->car = nullptr;
	}

	AbstractCar *car;
};

void test01()
{
	Person *p = new Person;
	p->setCar(new DaZhong);
	p->Doufeng();
	p->setCar(new TuoLaJi);
	p->Doufeng();
}


int main()
{
	test01();
	return 0;
}

测试结果:

在这里插入图片描述

以上是关于[设计模式]合成复用原则的主要内容,如果未能解决你的问题,请参考以下文章

[设计模式]合成复用原则

从零开始学习Java设计模式 | 软件设计原则篇:合成复用原则

从零开始学习Java设计模式 | 软件设计原则篇:合成复用原则

go语言设计模式-合成复用原则

设计模式-合成复用原则-》面向对象设计原则

七大设计原则之合成复用原则应用