《大话设计模式》外观模式:为子系统的一组接口提供一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
//fund.h
#ifndef _FUND_H_
#define _FUND_H_
#include <string>
using namespace std;
class fund
{
public:
fund() {}
virtual ~fund() {}
void buy()
{
cout << "买进" << name << endl;
}
void sell()
{
cout << "卖出" << name << endl;
}
virtual void setName() = 0;
protected:
string name;
};
class socket1: public fund
{
public:
socket1() {}
~socket1() {}
void setName()
{
name = "股票1";
}
};
class socket2: public fund
{
public:
socket2() {}
~socket2() {}
void setName()
{
name = "股票2";
}
};
class nationalDebt1: public fund
{
public:
nationalDebt1() {}
~nationalDebt1() {}
void setName()
{
name = "国债1";
}
};
class nationalDebt2: public fund
{
public:
nationalDebt2() {}
~nationalDebt2() {}
void setName()
{
name = "国债2";
}
};
class realty1: public fund
{
public:
realty1() {}
~realty1() {}
void setName()
{
name = "房地产1";
}
};
class investor
{
public:
investor()
{
for(int i = 0; i < 5; i++)
f[i] = NULL;
f[0] = new socket1();
f[1] = new socket2();
f[2] = new nationalDebt1();
f[3] = new nationalDebt2();
f[4] = new realty1();
for(int i = 0; i < 5; i++)
{
if(f[i] != NULL)
f[i]->setName();
}
}
~investor()
{
for(int i = 0; i < 5; i++)
{
if(f[i] != NULL)
delete f[i];
}
}
void buyFund()
{
for(int i = 0; i < 5; i++)
{
if(f[i] != NULL)
f[i]->buy();
}
}
void sellFund()
{
for(int i = 0; i < 5; i++)
{
if(f[i] != NULL)
f[i]->sell();
}
}
private:
fund *f[5];
};
#endif
#include <iostream>
#include "fund.h"
using namespace std;
int main()
{
investor iv;
iv.buyFund();
iv.sellFund();
return 0;
}