设计模式系列---代理模式
2015-05-13 22:35
316 查看
类图:
main.cpp
RealSubject.h
RealSubject.cpp
ProxySubject.h
ProxySubject.cpp
makefile
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)
相关文章推荐
- 通俗系列-Java设计模式-代理模式
- 4.偏头痛杨的常见设计模式入门系列之代理模式篇
- 深入理解JavaScript系列(31):设计模式之代理模式
- 深入理解JavaScript系列(31):设计模式之代理模式详解
- 深入理解JavaScript系列(31):设计模式之代理模式
- 设计模式总结篇系列:代理模式(Proxy)
- 极速理解设计模式系列:3.代理模式(Proxy Pattern)
- 设计模式系列之代理
- 极速理解设计模式系列:3.代理模式(Proxy Pattern)
- 深入理解JavaScript系列(31):设计模式之代理模式
- PHP设计模式系列(三):代理模式
- 设计模式系列之六:代理模式
- 设计模式学习系列八:代理(Proxy)模式
- C#设计模式系列:代理模式(Proxy Pattren)
- 深入理解JavaScript系列(31):设计模式之代理模式
- 设计模式初学者系列之代理模式
- 设计模式系列十三 代理模式介绍
- Java设计模式系列之动态代理模式(转载)
- 设计模式系列(六)代理模式
- Java/Android 设计模式系列(9)--代理模式