设计模式之代理模式
2014-06-11 21:48
176 查看
魂断C++,虽小懂一些c++语法。但用起来还是很纠结,一直停留在c的百慕大中。总是感觉拿c++的刀去砍c的肉。没有一点面向对象编程的感觉。因此想从头再来学习下。可是再去看c++ prime这些类似讲解多态,继承,重载等等的书籍又感觉很无聊,于是网上找了下,貌似设计模式idea是比较很好的体现面向对象编程。baidu一看设计模式GOF大师的杰作已经被衍生出若干个版本了,有java,c sharp,c++等。当然c++是我比较喜欢也是我会要用到的,因此此片为开篇学习c++设计模式日记,记录点滴,希望能终将能有一番回味。
当然学习嘛,难免参考了些比人的资料,包括论坛,博客等参考源有:
李创的blog:http://www.cppblog.com/converse/
wang_gary: http://www.cnblogs.com/wanggary/archive/2011/04/08/2009965.html
电子书籍 大话设计模式 开始,此次学习的是设计模式中的代理模式:看到这个名字想必不陌生,它是个中介而已。中介嘛现实生活我们有很多,大学毕业了我们出来工作,很多公司都不提供员工宿舍的,没办法来到一个陌生的地方需要解决租房子的问题,此时你会想到找中介给你办了,中介再从中收取部分费用。这些黑中介收费还蛮贵的一个月到两个月的房租不等,起码工资的一半都给他拿走。这只是其中一个例子,不过现在俺们IT人士也没傻到白白就给他中介费,要发挥我们自己的特长,毕竟我们还会上网嘛。我们可以xxx网上看租房信息呗,此类的网站不说你也懂得,此处略去xxx字,免得有广告嫌疑! 再有就是大伙都看过水浒传呗,比较有挑战的镜头有,西门庆和潘金莲xxx。看过的都懂的!里面有个人物不得不提那就是王婆,她就是实实在在的proxy了。她起到了很关键的作用,牵线搭桥最擅长。 类似的还有卢俊义那一章,卢员外中的管家李固和贾氏,但是他们之间没中介,不过贾氏和潘金莲同样是一个货色。为此程序中为能够提供统一的接口,又不影响彼此之间的功能。为了描述这两个女人,定义一个抽象类:class women{ public: women(){}; virtual ~women(){}; virtual void make_kiss_with_man(char *)=0; virtual void make_happy_with_man(char *)=0;//含有一个纯虚函数即为抽象类,抽象类不能实例化 };再虚拟出来一个代理(王婆,贾氏没通过王婆,但可以借助王婆这个类来实现执行)
class wang_po:public women{ public: wang_po(women *pwomen); ~wang_po(void); void make_kiss_with_man(char *man_name); void make_happy_with_man(char *man_name); private: women *m_pwomen;};
wang_po::wang_po(women *pwomen){ this->m_pwomen=pwomen; }
wang_po::~wang_po(void){ delete this->m_pwomen; } void wang_po::make_kiss_with_man(char *man_name){ this->m_pwomen->make_kiss_with_man(man_name); } void wang_po::make_happy_with_man(char *man_name){ this->m_pwomen->make_happy_with_man(man_name); }
class panjinlian:public women{ public: panjinlian(void); ~panjinlian(void); void make_kiss_with_man(char *man_name); void make_happy_with_man(char *man_name);
};
panjinlian::panjinlian(void){ //init panjinlian } panjinlian::~panjinlian(void){ //delete panjinlian } void panjinlian::make_happy_with_man(char *man_name){ cout<<"panjinlian fell happy with "<<man_name<<endl; }void panjinlian::make_kiss_with_man(char *man_name){ cout<<"panjinlian fly kiss to "<<man_name<<endl; }
class jiashi:public women{ public: jiashi(void); ~jiashi(void); void make_kiss_with_man(char *man_name); void make_happy_with_man(char *man_name);
};
jiashi::jiashi(void){ //do nothing
}
jiashi::~jiashi(void){
}
void jiashi::make_happy_with_man(char *man_name){
cout<<"jiashi happy with "<<man_name<<endl;
}
void jiashi::make_kiss_with_man(char *man_name){
cout<<"jiashi fly kiss to "<<man_name<<endl;
}
点击(此处)折叠或打开
#include "wangpo.h"
#include "panjinlian.h"
#include "jiashi.h"
#include <iostream>
#include <stdlib.h>
using namespace std;
void yuehui_panjinlian(void){
wang_po *pwangpo;
pwangpo = new wang_po(new panjinlian);
pwangpo->make_kiss_with_man("ximenqing");
pwangpo->make_happy_with_man("ximenqing");
delete pwangpo;
}
void yuehui_jiashi(void){
wang_po *pwangpo;
char *jianfu=new char[20];
jianfu="guanjia--ligu";
pwangpo = new wang_po(new jiashi);
pwangpo->make_kiss_with_man(jianfu);
pwangpo->make_happy_with_man(jianfu);
delete pwangpo;
}
int main(int argc,char *argv[]){
yuehui_panjinlian();
yuehui_jiashi();
}
[root@localhost Release]# ./proxy panjinlian fly kiss to ximenqing panjinlian fell happy with ximenqingjiashi fly kiss to guanjia--ligujiashi happy with guanjia--ligush: pause: command not found[root@localhost Release]#
proxy.zip
proxy.zip
阅读(181) | 评论(0) | 转发(0) |
0
上一篇:获取网卡连接状态
下一篇:设计模式之策略模式
相关热门文章
C++实现多线程安全的单例模式...
linux GPIO驱动
节省空间的装修 定制家具可以...
CloudStack的网络架构设计...
USB和串口(COM)的区别,以及相...
test123
编写安全代码——小心有符号数...
使用openssl api进行加密解密...
一段自己打印自己的c程序...
sql relay的c++接口
系统提供的库函数存在内存泄漏...
初学UNIX环境高级编程的,关于...
chinaunix博客什么时候可以设...
一个访问量较大网站的服务器。...
收音机驱动与v4l2架构的关系,...
给主人留下些什么吧!~~
评论热议
当然学习嘛,难免参考了些比人的资料,包括论坛,博客等参考源有:
李创的blog:http://www.cppblog.com/converse/
wang_gary: http://www.cnblogs.com/wanggary/archive/2011/04/08/2009965.html
电子书籍 大话设计模式 开始,此次学习的是设计模式中的代理模式:看到这个名字想必不陌生,它是个中介而已。中介嘛现实生活我们有很多,大学毕业了我们出来工作,很多公司都不提供员工宿舍的,没办法来到一个陌生的地方需要解决租房子的问题,此时你会想到找中介给你办了,中介再从中收取部分费用。这些黑中介收费还蛮贵的一个月到两个月的房租不等,起码工资的一半都给他拿走。这只是其中一个例子,不过现在俺们IT人士也没傻到白白就给他中介费,要发挥我们自己的特长,毕竟我们还会上网嘛。我们可以xxx网上看租房信息呗,此类的网站不说你也懂得,此处略去xxx字,免得有广告嫌疑! 再有就是大伙都看过水浒传呗,比较有挑战的镜头有,西门庆和潘金莲xxx。看过的都懂的!里面有个人物不得不提那就是王婆,她就是实实在在的proxy了。她起到了很关键的作用,牵线搭桥最擅长。 类似的还有卢俊义那一章,卢员外中的管家李固和贾氏,但是他们之间没中介,不过贾氏和潘金莲同样是一个货色。为此程序中为能够提供统一的接口,又不影响彼此之间的功能。为了描述这两个女人,定义一个抽象类:class women{ public: women(){}; virtual ~women(){}; virtual void make_kiss_with_man(char *)=0; virtual void make_happy_with_man(char *)=0;//含有一个纯虚函数即为抽象类,抽象类不能实例化 };再虚拟出来一个代理(王婆,贾氏没通过王婆,但可以借助王婆这个类来实现执行)
class wang_po:public women{ public: wang_po(women *pwomen); ~wang_po(void); void make_kiss_with_man(char *man_name); void make_happy_with_man(char *man_name); private: women *m_pwomen;};
wang_po::wang_po(women *pwomen){ this->m_pwomen=pwomen; }
wang_po::~wang_po(void){ delete this->m_pwomen; } void wang_po::make_kiss_with_man(char *man_name){ this->m_pwomen->make_kiss_with_man(man_name); } void wang_po::make_happy_with_man(char *man_name){ this->m_pwomen->make_happy_with_man(man_name); }
class panjinlian:public women{ public: panjinlian(void); ~panjinlian(void); void make_kiss_with_man(char *man_name); void make_happy_with_man(char *man_name);
};
panjinlian::panjinlian(void){ //init panjinlian } panjinlian::~panjinlian(void){ //delete panjinlian } void panjinlian::make_happy_with_man(char *man_name){ cout<<"panjinlian fell happy with "<<man_name<<endl; }void panjinlian::make_kiss_with_man(char *man_name){ cout<<"panjinlian fly kiss to "<<man_name<<endl; }
class jiashi:public women{ public: jiashi(void); ~jiashi(void); void make_kiss_with_man(char *man_name); void make_happy_with_man(char *man_name);
};
jiashi::jiashi(void){ //do nothing
}
jiashi::~jiashi(void){
}
void jiashi::make_happy_with_man(char *man_name){
cout<<"jiashi happy with "<<man_name<<endl;
}
void jiashi::make_kiss_with_man(char *man_name){
cout<<"jiashi fly kiss to "<<man_name<<endl;
}
点击(此处)折叠或打开
#include "wangpo.h"
#include "panjinlian.h"
#include "jiashi.h"
#include <iostream>
#include <stdlib.h>
using namespace std;
void yuehui_panjinlian(void){
wang_po *pwangpo;
pwangpo = new wang_po(new panjinlian);
pwangpo->make_kiss_with_man("ximenqing");
pwangpo->make_happy_with_man("ximenqing");
delete pwangpo;
}
void yuehui_jiashi(void){
wang_po *pwangpo;
char *jianfu=new char[20];
jianfu="guanjia--ligu";
pwangpo = new wang_po(new jiashi);
pwangpo->make_kiss_with_man(jianfu);
pwangpo->make_happy_with_man(jianfu);
delete pwangpo;
}
int main(int argc,char *argv[]){
yuehui_panjinlian();
yuehui_jiashi();
}
[root@localhost Release]# ./proxy panjinlian fly kiss to ximenqing panjinlian fell happy with ximenqingjiashi fly kiss to guanjia--ligujiashi happy with guanjia--ligush: pause: command not found[root@localhost Release]#
proxy.zip
proxy.zip
阅读(181) | 评论(0) | 转发(0) |
0
上一篇:获取网卡连接状态
下一篇:设计模式之策略模式
相关热门文章
C++实现多线程安全的单例模式...
linux GPIO驱动
节省空间的装修 定制家具可以...
CloudStack的网络架构设计...
USB和串口(COM)的区别,以及相...
test123
编写安全代码——小心有符号数...
使用openssl api进行加密解密...
一段自己打印自己的c程序...
sql relay的c++接口
系统提供的库函数存在内存泄漏...
初学UNIX环境高级编程的,关于...
chinaunix博客什么时候可以设...
一个访问量较大网站的服务器。...
收音机驱动与v4l2架构的关系,...
给主人留下些什么吧!~~
评论热议
相关文章推荐
- 设计模式----Proxy(代理)模式
- 乐在其中设计模式(C#) - 代理模式(Proxy Pattern)
- 乐在其中设计模式(C#) - 代理模式(Proxy Pattern)
- 设计模式 --- 代理模式(Proxy) 精选经验合集
- 深入浅出基于Java的代理设计模式
- 设计模式之Proxy(代理)
- 设计模式与泡mm的关系之Proxy代理模式及代理模式的再思考
- 设计模式(6)-代理模式(Proxy)
- Java设计模式:Proxy(代理)
- 设计模式之Proxy(代理)
- 深入浅出基于Java的代理设计模式
- 设计模式——代理模式
- 设计模式之代理模式(Proxy)
- C#中利用代理实现观察者设计模式
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式(8)-代理模式(Proxy)