设计模式--依赖倒转原则

依赖倒转原则:依赖于抽象类(接口类),不依赖于具体实现类
即:高层业务逻辑依赖抽象类,具体实现类 依赖于抽象业务逻辑
高层逻辑为:软件设计具体需求(eg:制造一台电脑)
抽象层为:很多抽象类(eg:电脑由CPU,显卡,硬盘,内存条等组成,此部分为抽象类)
具体实现类:实现高层逻辑的业务类(eg:具体的CPU,,显卡,硬盘,内存条等)

#include<iostream>
using namespace std;
//抽象类
class Cpu
{
public:
	virtual void doSomeThing() = 0;
};
class Memory
{
public:
	virtual void doSomeThing() = 0;
};
class HardDisk
{
public:
	virtual void doSomeThing() = 0;
};
class ShowCard
{
public:
	virtual void doSomeThing() = 0;
};
//具体实现类
class InterCpu : public Cpu
{
public:
	void doSomeThing()
	{
		cout << "我是inter制造的14nmCPU" << endl;
	}
};
class SeagateHardDisk :public HardDisk
{
public:
	void doSomeThing()
	{
		cout << "我是希捷制造的1T硬盘" << endl;
	}

};

class KingstonMemory :public Memory
{
public:
	void doSomeThing()
	{
		cout << "我是金士顿制造DDR4_16G运存" << endl;
	}

};

class GTX960ShowCard :public ShowCard
{
	void doSomeThing()
	{
		cout << "我是GTX960显卡" << endl;
	}
};

//高层业务逻辑
class computer
{
public:
	computer(Cpu *cpu, Memory *mem, HardDisk *hd, ShowCard *sc)
	{
		this->_cpu = cpu;
		this->_mem = mem;
		this->_hd = hd;
		this->_sc = sc;
	}

	void work()
	{
		this->_cpu->doSomeThing();
		this->_mem->doSomeThing();
		this->_hd->doSomeThing();
		this->_sc->doSomeThing();
	}

private:
	Cpu *_cpu = NULL;
	Memory *_mem = NULL;
	HardDisk *_hd = NULL;
	ShowCard *_sc = NULL;
};


int main()
{
	Cpu *cpu1 = new InterCpu;
	Memory *mem1 = new KingstonMemory;
	HardDisk *hd1 = new SeagateHardDisk;
	ShowCard *sc1 = new GTX960ShowCard;

	computer * com = new computer(cpu1, mem1, hd1, sc1);
	com->work();

	return 0;
}

只要将 多个抽象类 定义好,即不管 哪个 具体的 功能实现模块 只要继承抽象类并重写虚函数实现具体功能,即可以 实现高层逻辑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值