C++设计模式之代理
废话少说,先奉上代码:
#include "stdafx.h"
#include <iostream>
using namespace std;
class IKindwomen
{
public:
IKindwomen(void);
~IKindwomen(void);
virtual void makeEyesWithMan();
virtual void tlaWithMan();
};
class WangPo{
public:
WangPo(IKindwomen * pKindwomen);
~WangPo();
void makeEyesWithMan();
void tlaWithMan();
private:
IKindwomen * pKindwomen;
};
class PanJianLian:public IKindwomen{
public:
PanJianLian();
~PanJianLian();
virtual void makeEyesWithMan();
virtual void tlaWithMan();
};
class JiaShi:public IKindwomen{
public:
JiaShi();
~JiaShi();
virtual void makeEyesWithMan();
virtual void tlaWithMan();
};
WangPo::WangPo(IKindwomen * pKindwomen){
this->pKindwomen = pKindwomen;
}
WangPo::~WangPo(){
delete this->pKindwomen;
}
void WangPo::makeEyesWithMan(){
this->pKindwomen->makeEyesWithMan();
}
void WangPo::tlaWithMan(){
this->pKindwomen->tlaWithMan();
}
PanJianLian::PanJianLian(){}
PanJianLian::~PanJianLian(){}
void PanJianLian::makeEyesWithMan(){
cout<<"潘金莲抛媚眼!"<<endl;
}
void PanJianLian::tlaWithMan(){
cout<<"潘金莲谈恋爱!"<<endl;
}
JiaShi::JiaShi(){}
JiaShi::~JiaShi(){}
void JiaShi::makeEyesWithMan(){
cout<<"贾氏抛媚眼!"<<endl;
}
void JiaShi::tlaWithMan(){
cout<<"贾氏谈恋爱!"<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
WangPo* wangPo = new WangPo(new PanJianLian());
wangPo->makeEyesWithMan();
wangPo->tlaWithMan();
delete wangPo;
return 0;
}
先说类的设计,首先定义一个IKindwomen 类,声明虚函数:makeEyesWithMan(),tlaWithMan(),下面的JiaShi和PanJianLian类分别继承自IKindwomen 类
各自实现了上述连个成员方法。其次WangPo类声明了makeEyesWithMan(),tlaWithMan()和一个IKindwomen类型的私有成员变量。
在下面的main函数调用中,我们发现在我们调用makeEyesWithMan(),tlaWithMan()方法的时候是通过WangPo类的实例调用的,并未通过JiaShi和PanJianLian类的实例调用,在WangPo类的构造函数中入参数的类型决定了makeEyesWithMan(),tlaWithMan()函数的具体调用细节。通过上述的设计,实现了代理之功效,巧妙的通过WangPo类来管理西门庆的妹子们。此为C++ 之代理模式简单实现,望各位多多指教。
分享到:
相关推荐
《C++设计模式--基于Qt4开源跨平台开发框架》一书主要探讨了如何在C++编程中利用设计模式,并结合Qt4框架进行高效的跨平台应用开发。设计模式是软件工程中的重要概念,它们是经过时间和实践验证的解决特定问题的模板...
### C++设计模式之代理模式详解 #### 一、引言 在软件开发过程中,设计模式作为一套被广泛接受的解决方案,为解决特定问题提供了一种标准的方法。本篇文章将聚焦于C++设计模式中的“代理模式”,通过深入剖析其原理...
从给定的文件信息来看,该文档主要涵盖了GoF(Gang of Four)提出的23种设计模式的详细解析,并附带了C++语言的实现源码。设计模式是在软件工程领域内,针对常见问题的一套经过验证的解决方案,它们为解决特定类型的...
C++实现代理模式,隐藏了真实的对象并且可以扩展其他的非核心功能,还实现了强制代理
"C++设计模式精华版"正是这样一个资源,它涵盖了多种在软件开发中常用的设计模式,帮助开发者深入理解并熟练运用这些模式。 设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。创建型模式关注对象的...
C++设计模式是面向对象编程中的重要概念,它提供了一种标准的、可复用的方法来组织代码,使得软件更易于理解和维护。极客班C++设计模式课件资料集合了网易公开课的相关教育资源,包括PPT演示文稿和一个项目PDF手册,...
C++设计模式基础教程.pdf 本资源摘要信息涵盖了C++设计模式基础教程的主要知识点,包括设计模式的定义、分类、作用、学习方法和实践经验。 设计模式的定义和作用 设计模式是一套被反复使用、多数人知晓的、经过...
C++设计模式是一种在软件开发过程中,为了应对特定问题或场景而提炼出的可复用的解决方案。设计模式并不是具体的代码或库,而是对常见问题的标准化回答,它结合了面向对象编程的思想,提升了代码的可读性、可维护性...
### 设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 引言 设计模式是软件工程领域中一个极为重要的概念,它代表着一系列被广泛接受的解决特定问题的方法。GoF(Gang of Four)所提出的23种设计模式更是...
代理模式是一种设计模式,它在《设计模式:可复用面向对象软件的基础》一书中被定义为:为其他对象提供一种代理以控制对该对象的访问。这种模式的主要目的是在不改变原有对象行为的情况下,增加额外的功能或者控制对...
代理模式是一种设计模式,它是结构型模式之一,主要用于在客户端和目标对象之间建立一个代理对象,以便控制对目标对象的访问。在C++中,代理模式可以用来为其他对象提供一种代理以控制对这个对象的访问,或者增加...
《C++设计模式》是软件开发中的一种重要思想,它为解决特定问题提供了一套经过时间验证的可重用解决方案。这些模式源自于实际的编程经验,被广泛应用于大型、复杂的系统开发,以提高代码的可读性、可维护性和可扩展...
C++设计模式是一种在软件开发中经常使用的复用和组织代码的方法,它们是解决常见问题的模板或蓝图,可以提高代码的可读性、可维护性和可扩展性。本资源包含了一些C++实现的设计模式示例,对于初学者来说是非常宝贵的...
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...
设计模式是面向对象编程领域中,解决特定问题的一般性方案。它们由四人组(Gang of Four,简称GoF)在1994年的《设计模式:可复用面向对象软件的基础》一书中提出。设计模式分为创建型、结构型和行为型三类,总共...
"C.C++设计模式"着重探讨如何在C和C++这两种编程语言中应用这些模式,以提高代码的可读性、可维护性和复用性。下面将对设计模式进行深入解析,并结合C++特性展开讨论。 1. **单例模式**:保证一个类只有一个实例,...
代理模式是一种程序设计最为重要的一种模式,其具体的使用非常广泛,根据它的作用,其实我们可以直接理解为中间件或者中间层,比如各类软件的中间件,软件与硬件中的中间层。 作用 为其他对象提供一种代理以控制对...
C++设计模式是一种在软件开发中经过验证的解决常见问题的方法论,它为软件开发提供了标准的解决方案。在本资源中,"C++设计模式-基于QT4开源跨平台开发框架 源码",我们将重点探讨如何在C++编程语言中结合QT4框架来...