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