生活随笔
收集整理的這篇文章主要介紹了
[设计模式]合成复用原则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
合成復用原則:繼承和組合,優先使用組合。
這樣寫,每開一種車,就要弄一個新的Person類。
代碼如下:
#include <iostream>
using namespace std
;class AbstractCar
{
public:virtual void run() = 0;
};class DaZhong :public AbstractCar
{
public:virtual void run(){cout
<< "大眾車啟動" << endl
;}
};class TuoLaJi :public AbstractCar
{
public:virtual void run(){cout
<< "拖拉機啟動" << endl
;}
};class PersonA:public TuoLaJi
{
public:void Doufen(){run();}
};class PersonB :public DaZhong
{
public:void Doufen(){run();}
};
合成復用原則
代碼如下:
#include <iostream>
using namespace std
;class AbstractCar
{
public:virtual void run() = 0;
};class DaZhong :public AbstractCar
{
public:virtual void run(){cout
<< "大眾車啟動" << endl
;}
};class TuoLaJi :public AbstractCar
{
public:virtual void run(){cout
<< "拖拉機啟動" << endl
;}
};class Person
{
public:void setCar(AbstractCar
*car
){this->car
= car
;}void Doufeng(){this->car
->run();if (this->car
!= nullptr){delete this->car
;}this->car
= nullptr;}AbstractCar
*car
;
};void test01()
{Person
*p
= new Person
;p
->setCar(new DaZhong
);p
->Doufeng();p
->setCar(new TuoLaJi
);p
->Doufeng();
}int main()
{test01();return 0;
}
測試結果:
總結
以上是生活随笔為你收集整理的[设计模式]合成复用原则的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。