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;                                   
};                                                               
//~_FACADE_H_
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 : 定义控制台应用程序的入口点。
//
using namespace std;
// 为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接
// 口使得这一子系统更加容易使用
int _tmain(int argc, _TCHAR* argv[])
{
  Facade* f = new Facade(); 
  f->OperationWrapper();//包含sub1,sub2两个操作
  delete f;
  system("pause");
  return 0;
}









