定义
动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式属于结构型模式,它是作为现有的类的一个包装。
案例
我们有一系列的流式读写操作,如文件流、网络流、内存流等等。
class Stream {
public:
virtual ~Stream() {
}
virtual char read(int num) = 0;
virtual void write(char data) = 0;
};
class FileStream : public Stream {
public:
virtual ~FileStream() {
}
virtual char read(int num)
{
// FileStream read operation
}
virtual void write(char data)
{
// FileStream write operation
}
};
class NetStream : public Stream {
public:
virtual ~NetStream () {
}
virtual char read(int num