#pragma once
//送礼物的抽象类
class ICGivGift
{
public:
ICGivGift();
virtual ~ICGivGift();
virtual void GivFlower() = 0;
virtual void GivChocolate() = 0;
};
#pragma once
#include "IGivGift.h"
//代理 为追求者和被追求者作为一个中间人
class CProxy:public ICGivGift
{
public:
CProxy(ICGivGift* pPursure);
~CProxy();
void GivFlower() override;
void GivChocolate() override;
ICGivGift* m_pPursure; //追求者对象
};
#pragma once
#include "IGivGift.h"
#include "SchoolGirl.h"
#include <iostream>
//追求者
class CPursuer:public ICGivGift
{
public:
CPursuer(CSchoolGirl* pSchoolGirl);
~CPursuer();
void GivFlower() override;
void GivChocolate() override;
private:
CSchoolGirl* m_pSchoolGirl;
};
#include "stdafx.h"
#include "Pursuer.h"
CPursuer::CPursuer(CSchoolGirl* pSchoolGirl):m_pSchoolGirl(pSchoolGirl)
{
}
CPursuer::~CPursuer()
{
}
void CPursuer::GivFlower()
{
std::cout << m_pSchoolGirl->GetName()<<"送你鲜花!" << std::endl;
}
void CPursuer::GivChocolate()
{
std::cout <<m_pSchoolGirl->GetName()<< "送你巧克力!" << std::endl;
}
#pragma once
#include <string>
class CSchoolGirl
{
public:
CSchoolGirl(std::string strName);
~CSchoolGirl();
const std::string& GetName()const { return m_strName; }
private:
std::string m_strName;
};
#include "SchoolGirl.h"
#include "Proxy.h"
#include "IGivGift.h"
#include "Pursuer.h"
int main()
{
CSchoolGirl* pSchoolGirl = new CSchoolGirl("丽丽");
CPursuer* pPursure = new CPursuer(pSchoolGirl);
CProxy* pProxy = new CProxy(pPursure);
pProxy->GivFlower();
pProxy->GivChocolate();
system("pause");
return 0;
}