您的位置:首页 > 其它

设计模式之代理模式

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架构的关系,...








给主人留下些什么吧!~~






评论热议
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: