C++ 設計模式 裝飾模式(Decorator Pattern)
C++ 設計模式 裝飾模式
在結構型模式中裝飾模式給我留下了深刻的印象,其中也感覺到在設計模式中基本都是
依賴C++的多型來實現,裝飾模式也不例外,他允許在不改變原有類的程式碼的基礎上,
不透過直接繼承原有類的程式碼透過一個抽象介面層進行實現,甚至可以隨意的組合,
所以這裡記錄之以備使用
下面是模型圖:
下面是一個簡單的模擬程式碼,模擬本來一個工具只有寫功能,但是我們要不斷的擴充其
功能讓它有聽有讀的功能:
這是跑出來的結果
----source tool----
i can write!!
-----can listen tool-----
i can write!!
i can listene !!
----can read tool------
i can write!!
i can read !!
----can listen and read tool------
i can write!!
i can read !!
i can listene !!
下面是程式碼:
作者微信:
在結構型模式中裝飾模式給我留下了深刻的印象,其中也感覺到在設計模式中基本都是
依賴C++的多型來實現,裝飾模式也不例外,他允許在不改變原有類的程式碼的基礎上,
不透過直接繼承原有類的程式碼透過一個抽象介面層進行實現,甚至可以隨意的組合,
所以這裡記錄之以備使用
下面是模型圖:
下面是一個簡單的模擬程式碼,模擬本來一個工具只有寫功能,但是我們要不斷的擴充其
功能讓它有聽有讀的功能:
這是跑出來的結果
----source tool----
i can write!!
-----can listen tool-----
i can write!!
i can listene !!
----can read tool------
i can write!!
i can read !!
----can listen and read tool------
i can write!!
i can read !!
i can listene !!
下面是程式碼:
點選(此處)摺疊或開啟
-
#include <iostream>
-
using namespace std;
-
/*裝飾模式
-
*裝飾者模式(Decorator Pattern)動態的給一個物件新增一些額外的職責
-
*/
-
class ABS_TOOL
-
{
-
public:
-
virtual ~ABS_TOOL(){}
-
virtual void fun() = 0; //功能介面
-
};
-
-
-
class write:public ABS_TOOL
-
{
-
public:
-
virtual void fun()
-
{
-
cout<<"i can write!!\n";
-
}
-
};
-
-
class listen:public ABS_TOOL //繼承
-
{
-
public:
-
virtual ~listen(){}
-
listen(ABS_TOOL* tool) //依賴
-
{
-
this->tool = tool;
-
}
-
virtual void fun()
-
{
-
tool->fun();
-
cout<<"i can listene !!\n";
-
}
-
private:
-
ABS_TOOL* tool; //聚合
-
};
-
-
class read:public ABS_TOOL //繼承
-
{
-
public:
-
virtual ~read(){}
-
read(ABS_TOOL* tool) //依賴
-
{
-
this->tool = tool;
-
}
-
virtual void fun()
-
{
-
tool->fun();
-
cout<<"i can read !!\n";
-
}
-
private:
-
ABS_TOOL* tool; //聚合
-
};
-
-
-
int main(void)
-
{
-
cout<<"----source tool----\n";
-
write test1;
-
test1.fun();
-
cout<<"-----can listen tool-----\n";
-
listen test2(&test1);
-
test2.fun();
-
cout<<"----can read tool------\n";
-
read test3(&test1);
-
-
test3.fun();
-
cout<<"----can listen and read tool------\n";
-
listen test4(&test3);
-
test4.fun();
-
-
-
return 0;
- }
作者微信:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-2137337/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計模式--裝飾模式(Decorator Pattern)設計模式
- 設計模式-裝飾模式(Decorator Pattern)設計模式
- 設計模式之裝飾器模式(decorator pattern)設計模式
- JAVA設計模式之 裝飾模式【Decorator Pattern】Java設計模式
- 裝飾模式 (Decorator Pattern)模式
- C#設計模式-裝飾器模式(Decorator Pattern)C#設計模式
- PHP設計模式(六)—裝飾器模式(Decorator Pattern)PHP設計模式
- Java設計模式之裝飾者模式(Decorator pattern)Java設計模式
- Net設計模式例項之裝飾者模式(Decorator Pattern)設計模式
- Decorator裝飾設計模式設計模式
- 設計模式 (十)裝飾模式(Decorator)設計模式
- PHP設計模式- Decorator 裝飾器模式PHP設計模式
- java設計模式-裝飾器模式(Decorator)Java設計模式
- 常用開源框架中設計模式使用分析- 裝飾器模式(Decorator Pattern)框架設計模式
- python: 設計模式(design pattern)之修飾器模式(decorator)Python設計模式
- PHP設計模式之裝飾器模式(Decorator)PHP設計模式
- C#設計模式系列:裝飾模式(Decorator)C#設計模式
- 設計模式的征途—10.裝飾(Decorator)模式設計模式
- 設計模式--裝飾器模式Decorator(結構型)設計模式
- Decorator裝飾模式模式
- 裝飾器模式(Decorator)模式
- 前端常用設計模式(1)--裝飾器(decorator)前端設計模式
- 設計模式中的俄羅斯套娃:裝飾者(Decorator)模式設計模式
- c++設計模式-裝飾器模式和代理模式C++設計模式
- 設計模式——裝飾模式設計模式
- 設計模式-裝飾模式設計模式
- C++設計模式::裝飾模式or代理模式or面向切片程式設計(AOP)C++設計模式程式設計
- 設計模式-裝飾設計模式設計模式
- C++設計模式——命令模式(command pattern)C++設計模式
- 設計模式----裝飾器模式設計模式
- 設計模式-裝飾者模式設計模式
- 設計模式——裝飾者模式設計模式
- 設計模式-裝飾器模式設計模式
- [設計模式] 裝飾器模式設計模式
- 設計模式(八):裝飾模式設計模式
- 【設計模式之裝飾模式】設計模式
- 設計模式之裝飾模式設計模式
- [設計模式]裝飾者模式設計模式