#ifndef _FACADE_H_
#define _FACADE_H_
#include "stdafx.h"
class Subsystem1
{
public:
Subsystem1()
{
}
~Subsystem1()
{
}
void Operation();
};
class Subsystem2
{
public:
Subsystem2()
{
}
~Subsystem2()
{
}
void Operation();
};
class Facade
{
public:
Facade();
~Facade();
void OperationWrapper();
private:
Subsystem1* _subs1;
Subsystem2* _subs2;
};
#endif //~_FACADE_H_
#include "stdafx.h"
#include "facade_impl.h"
#include <iostream>
using namespace std;
void Subsystem1::Operation()
{
cout<<this<<" Subsystem1 operation"<<endl;
}
void Subsystem2::Operation()
{
cout<<this<<" Subsystem2 operation"<<endl;
}
Facade::Facade()
{
this->_subs1 = new Subsystem1();
this->_subs2 = new Subsystem2();
}
Facade::~Facade()
{
delete _subs1;
delete _subs2;
}
void Facade::OperationWrapper()
{
this->_subs1->Operation();
this->_subs2->Operation();
}
// Facade.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include "facade_impl.h"
using namespace std;
// 为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接
// 口使得这一子系统更加容易使用
int _tmain(int argc, _TCHAR* argv[])
{
Facade* f = new Facade();
f->OperationWrapper();//包含sub1,sub2两个操作
delete f;
system("pause");
return 0;
}