先上銀行類案例代碼如下:
#include<iostream>
using namespace std;
class BankWorker
{
public:
void save()
{
cout << "存款" << endl;
}
void moveM()
{
cout << "取款" << endl;
}
void jiaofei()
{
cout << "繳費" << endl;
}
};
class AbBankWorker
{
public:
virtual void dothing() = 0;
};
class SaveBanker :public AbBankWorker
{
public:
virtual void dothing()
{
cout << "存款" << endl;
}
};
class MoveBanker :public AbBankWorker
{
public:
virtual void dothing()
{
cout << "取款" << endl;
}
};
class SaveBanker :public AbBankWorker
{
public:
virtual void dothing()
{
cout << "繳費款" << endl;
}
};
void main11()
{
BankWorker*bw = new BankWorker;
bw->jiaofei();
bw->moveM();
bw->save();
cout << "hello..." << endl;
system("pause");
return;
}
void main22()
{
AbBankWorker*bw = NULL;
bw=new MoveBanker;
bw->dothing();
delete bw;
return;
}
void main()
{
main22();
system("pause");
return;
}
單一職責原則類的職責要單一,對外只提供一種功能,而引起內變化的原因都應該只有一個,就是依賴倒置原則依賴于抽象接口,不要依賴具體的實現類,也就是針對接口編程
#include<iostream>
using namespace std;
class HardDisk
{public:
virtual void work();
};
class Memory
{
public:
virtual void work();
};
class Cpu
{
public:
virtual void work();
};
class ComPuter
{
public:
ComPuter(HardDisk*m_handdisk, Memory*m_memory, Cpu*m_cpu)
{
m_handdisk = handdisk;
m_memory = memory;
m_cpu = cpu;
}
public:
void work()
{
m_handdisk->work();
m_memory->work();
m_cpu->work();
}
private:
HardDisk*m_handdisk;
Memory*m_memory;
Cpu*m_cpu;
};
class InterCpu :public Cpu
{
public:
void work()
{
cout << "我是因特爾廠家" << endl;
}
};
class XSDisk :public HardDisk
{
public:
void work()
{
cout << "我是西數硬盤廠家" << endl;
}
};
class JSDMem :public Memory
{
public:
void work()
{
cout << "我是JSDMem廠家" << endl;
}
};
void main()
{
HardDisk*handdisk=NULL;
Memory*memory=NULL;
Cpu*cpu=NULL;
handdisk = new XSDisk;
memory= new JSDMem;
cpu = new InterCpu;
ComPuter*mycomputer = new ComPuter(harddisk, memory, cpu);
mycomputer->work();
delete mycomputer;
delete cpu;
delete memory;
delete harddisk;
cout << "hello" << endl;
system("pause");
return;
}
接口隔離原則不應該強迫客戶的程序依賴他們不需要的接口方法,一個接口應該是提供一種對外功能,不應該把所有的操作都封裝到一個接口中去
里氏替換原則任何抽象類出現的地方都可以用它的實現類進行替換,實際就是虛擬機智語言級別,實現面向對象功能
優先使用組合而不是繼承原則如果使用繼承,會導致復位的任何變化,都可能影響此類的行為,如果使用對象組合,就降低了這種依賴關系
迪米特法則一個對象應當對其他對象盡可能少的了解,從而降低各個對象之間的耦合,提高系統的可維護性。例如,在一個程序中,各個模塊之間相互調用時,通常會提供一個統一的接口來實現,這樣其他模塊不需要了解另外一個模塊的內部實現細節,這樣當一個模塊內部的實現發生改變的時候,不會影響其他模塊的使用黑盒原理。
到此這篇關于淺談C++ 設計模式的基本原則的文章就介紹到這了,更多相關C++ 設計模式的基本原則內容請搜索html5模板網以前的文章希望大家以后多多支持html5模板網!
【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!