您的位置:首页 > 其它

设计模式系列---代理模式

2015-05-13 22:35 316 查看
类图:



main.cpp

#ifndef SUBJECT_H
#define SUBJECT_H
class Subject
{
public:
Subject(){}
~Subject(){}
virtual void Request() = 0;
};

#endif


RealSubject.h

#ifndef REALSUBJECT_H
#define REALSUBJECT_H
#include "Subject.h"
class RealSubject : public Subject
{
public:
RealSubject(){}
~RealSubject(){}
virtual void Request();
};

#endif


RealSubject.cpp

#include "RealSubject.h"
#include <iostream>
void RealSubject::Request()
{
std::cout << "RealSubject::Request()" << std::endl;
}


ProxySubject.h

#ifndef PROXYSUBJECT_H_
#define PROXYSUBJECT_H_
#include "Subject.h"
#include "RealSubject.h"

class ProxySubject : public Subject
{
public :
ProxySubject(){}
~ProxySubject(){}
virtual void Request();
void PrevRequest();
void AfterRequest();
private:
RealSubject m_RealSubject;
};

#endif


ProxySubject.cpp

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

void ProxySubject::Request()
{
PrevRequest();
m_RealSubject.Request();
AfterRequest();
}

void ProxySubject::PrevRequest()
{
std::cout << "ProxySubject::PrevRequest()" << std::endl;
}

void ProxySubject::AfterRequest()
{
std::cout << "ProxySubject::AfterRequest()" << std::endl;
}


makefile

CPP = g++
CFLAGS = -g -Wall
TARGET = proxy
SOUR = $(wildcard *.cpp)
DEST = $(patsubst %.cpp, %.o, $(SOUR))

all : $(DEST)
$(CPP) $$(find ./ -name '*.o') -o $(TARGET)
%.o : %.cpp
$(CPP) $(CFLAGS) -c $< -o $@

clean:
rm *.o $(TARGET)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: