C++中的开闭原则使用C++多态功能实现附源码
生活随笔
收集整理的這篇文章主要介紹了
C++中的开闭原则使用C++多态功能实现附源码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
開閉原則
使用開閉原則之前一個銀行柜員會將所有的工作都操作一遍,這樣會大大降低辦事的效率,而且銀行的業務不適合擴展,沒擴展一項業務就要培訓所有的業務員。改為使用開閉原則之后,每個銀行業務員只負責一項業務即可,這樣做增加了系統的復雜性,但是想要新增業務只需要增加個人員,培訓一個人新技能即可。也即是增加系統復雜性,但是原有的基礎不變的情況下就可實現對業務的擴展。
具體的CPP代碼如下:
#include <iostream>using namespace std;// 在使用開閉原則之前 // 所有的事情都一個對象中完成,顯得類很臃腫 class BankWorker { public:void SaveMoney(void){cout << "save money" << endl;}void WithdrawMoney(void){cout << "withdraw money" << endl;}void TransferMoney(void){cout << "transfer money" << endl;} };/* 使用開閉原則之后 */ // 定義一個虛類,相當于java中的接口 class OcpBankWorker { public:virtual void DoSomething(void) = 0; };// 虛函數實現 class SaveBankWorker : public OcpBankWorker { public:virtual void DoSomething(void){cout << "save money ocp" << endl;} };class WithdrawBankWorker : public OcpBankWorker { public:virtual void DoSomething(void){cout << "withdraw money ocp" << endl;} };class TransferBankWorker : public OcpBankWorker { public:virtual void DoSomething(void){cout << "transfer money ocp" << endl;}};// 框架函數 void HowDo(OcpBankWorker &ocpBankWorker) {ocpBankWorker.DoSomething(); }// 使用多態的三個原則 // 1.要有繼承 // 2.要有函數重寫 // 3.要有父類指針(父類引用)指向子類對象 int main(int argc, char const *argv[]) {// 在使用開閉原則之前cout << "before use open close principle" << endl;BankWorker *bw = new BankWorker;bw->SaveMoney();bw->TransferMoney();bw->WithdrawMoney();cout << "=========================================" << endl;// 使用開閉原則之后// 使用多態技術實現OcpBankWorker *aw = NULL;aw = new SaveBankWorker;HowDo(*aw);delete aw;aw = new WithdrawBankWorker;HowDo(*aw);delete aw;aw = new TransferBankWorker;HowDo(*aw);delete aw;cout << "open close principle" << endl;return 0; }上述程序執行之后輸出結果:
before use open close principle save money transfer money withdraw money ========================================= save money ocp withdraw money ocp transfer money ocp open close principle總結
以上是生活随笔為你收集整理的C++中的开闭原则使用C++多态功能实现附源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python】SyntaxError:
- 下一篇: 作者:唐华(1973-),男,华南师范大