大胖的部落格
Just a note
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks
<
2009年6月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
Algorithm(13)
(rss)
C#(13)
(rss)
C++(22)
(rss)
Design Pattern(23)
(rss)
Others(14)
(rss)
STL(9)
(rss)
Technical(2)
(rss)
UML(2)
(rss)
Win32(18)
(rss)
Reference
Windows XP command line
最新评论
1. re: 在TCL命令行中调用C函数
@Kenny
实在不好意思,时间太过久远,本人已好久没有接触TCL……
--大胖
2. re: 在TCL命令行中调用C函数
請問如何溝通array 變數
Q:1
tcl array in C
Q:2
C array in tcl
懇求指導
--Kenny
3. re: 在TCL命令行中调用C函数
谢谢!
--1232
Decorator
当想针对某个子类对象添加新功能时,可以不采用继续继承该子类产生新的派生类的方法。
Decorator更加灵活地动态扩展目标子类。
从基类新派生的Decorator类保存了基类类型的指针,重写了需要扩展功能的函数。
Decorator类对象构造时传入基类类型指针(实际指向目标子类),这样内部可以调用目标子类的方法,重写时调用目标子类方法,并加入新的操作。
Decorator对象就可以取代目标子类对象,可以调用原来的操作,还加入了新的操作,且类型都为基类类型。
#include
<
iostream
>
using
namespace
std;
//
抽象基类
class
Component
{
public
:
virtual
void
Operation()
=
0
;
}
;
//
具体子类
class
ConcreteComponent:
public
Component
{
public
:
void
Operation()
{
cout
<<
"
My operation
"
<<
endl;
}
}
;
//
Decorator基类,传入Component类型指针,重写Operation方法
class
Decorator:
public
Component
{
public
:
Decorator(Component
*
p):pc(p)
{}
//
调用传入Component类型对象的方法
void
Operation()
{
pc
->
Operation();
}
private
:
Component
*
pc;
}
;
//
Decorator子类
class
ConcreteDecorator:
public
Decorator
{
public
:
ConcreteDecorator(Component
*
p):Decorator(p)
{}
//
重写Operation,加入自己的操作
void
Operation()
{
Decorator::Operation();
this
->
AddedOperation();
}
private
:
//
添加的操作
void
AddedOperation()
{cout
<<
"
Added Operation
"
<<
endl;}
}
;
int
main()
{
//
添加Decorator之前的Operation
Component
*
pc
=
new
ConcreteComponent;
pc
->
Operation();
//
添加了新操作之后的Operation
Component
*
pd
=
new
ConcreteDecorator(pc);
pd
->
Operation();
delete pd;
delete pc;
return
0
;
}
posted on 2009-06-09 15:56
大胖
阅读(152)
评论(0)
编辑
收藏
引用
所属分类:
Design Pattern
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
常用设计模式
State
Visitor
Template Method
Observer
Memento
Mediator
Iterator
Command
Chain of Responsibility
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 大胖