基于c++的包装者模式初探。

#ifndef INPUTSTREAM_H
#define INPUTSTREAM_H


class Inputstream{
public:
virtual void read()=0;

virtual ~Inputstream(){}


};

#endif



#ifndef FILE_INPUTSTREAM_H
#define FILE_INPUTSTREAM_H


#include "Inputstream.h"
#include <iostream>
class FileInputstream : public Inputstream{
public:
virtual void read();

virtual ~FileInputstream(){}


};

#endif


#include "FileInputstream.h"
using namespace std;

void FileInputstream::read(){

cout<<"read a byte."<<endl;
}



#ifndef BUFFERED_INPUTSTREAM_H
#define BUFFERED_INPUTSTREAM_H

#include "Inputstream.h"
#include <iostream>


class BufferedInputstream : public Inputstream{
public:
virtual void read();
virtual ~BufferedInputstream(){
delete insp;

}

virtual void readline();//add func.
BufferedInputstream(Inputstream*);

private:
Inputstream* insp;

};

#endif


#include "BufferedInputstream.h"
using namespace std;

BufferedInputstream::BufferedInputstream(Inputstream* ins):Inputstream(){
insp=ins;
}



void BufferedInputstream::read(){
insp->read();

}

void BufferedInputstream::readline(){
cout<<"read a line."<<endl;

}


#ifndef READER_DECORATOR_H
#define READER_DECORATOR_H

#include "Inputstream.h"
#include <iostream>
#include "BufferedInputstream.h"
class ReaderDecorator : public Inputstream{
public:

virtual void read();
virtual void readline();//
virtual void getlines();//

virtual ~ReaderDecorator(){

delete insp;

}
ReaderDecorator(BufferedInputstream*);

private:
BufferedInputstream* insp;


};

#endif


#include "ReaderDecorator.h"
using namespace std;

ReaderDecorator::ReaderDecorator(BufferedInputstream* ins):Inputstream(){

insp=ins;
}


void ReaderDecorator::read(){
insp->read();

}


void ReaderDecorator::readline(){

insp->readline();


}


void ReaderDecorator::getlines(){


cout<<"getlines...."<<endl;

}



#include "FileInputstream.h"
#include "BufferedInputstream.h"
#include "ReaderDecorator.h"
int main(){
Inputstream* fins=new FileInputstream;
fins->read();

//
BufferedInputstream* bufins=new BufferedInputstream(fins);
bufins->read();
bufins->readline();
//
ReaderDecorator* reader=new ReaderDecorator(bufins);
reader->read();
reader->readline();
reader->getlines();
//

delete reader;
return 0;
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值