生活随笔
收集整理的這篇文章主要介紹了
C++之依赖倒置原则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C++之依賴倒置原則
1. 依賴于具體抽象(接口),不依賴于具體的實現,也就是針對接口編程。
2. 實現高層業務和實現層、實現層和實現層之間的解耦合;
實例:
電腦框架和電腦內部的配件產品(或提供配件產品的廠商)實現解耦合
電腦框架(Computer)由硬盤(HardDisk),內存(Memory)和CPU組成,,,選擇廠商分別為:
硬盤(XSDisk),內存(JSDMemory)和CPU(InterCPU)。
#include <iostream>
using namespace std;
class HandDisk
{
public:virtual void work() = 0; //抽象層
};
class Memory
{
public:virtual void work() = 0; //抽象層
};
class CPU
{
public:virtual void work() = 0; //抽象層
};class Computer
{
public:Computer(HandDisk *handdisk, Memory *memory, CPU *cpu){this->handdisk = handdisk; this->memory = memory; this->cpu = cpu;}void work() //電腦工作,也就是內存+硬盤+cpu協同工作 //高層業務邏輯向抽象層靠攏{handdisk->work(); memory->work(); cpu->work();}
private:HandDisk *handdisk;Memory *memory;CPU *cpu;
};//廠商、產品
class XSDisk :public HandDisk //實現虛函數重寫 //實現層向中間抽象層靠攏,所以都是work()函數
{
public:void work(){ cout << "西數硬盤" << endl; }
};
class JSDMemory :public Memory //實現層向中間抽象層靠攏,所以都是work()函數
{
public:void work(){ cout << "JSD內存" << endl; }
};
class InterCPU :public CPU //實現層向中間抽象層靠攏,所以都是work()函數
{
public:void work(){ cout << "Interl的CPU" << endl; }
};void main()
{HandDisk *handdisk = NULL;Memory *memory = NULL;CPU *cpu = NULL;handdisk = new XSDisk;memory = new JSDMemory;cpu = new InterCPU;Computer *myComputer = new Computer(handdisk, memory, cpu);myComputer->work();delete myComputer;delete cpu;delete memory;delete handdisk;cout << "Hello" << endl;system("pause");return ;
}
分析:
1. 先確定框架,并確定抽象層
2. 高層業務邏輯向抽象層靠攏
3. 實現層向中間抽象層靠攏
4. 電腦工作,也就是內存+硬盤+cpu協同工作
總結
以上是生活随笔為你收集整理的C++之依赖倒置原则的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。