1 #include <string> 2 #include <iostream> 3 4 using namespace std; 5 6 class STSystemA 7 { 8 public: 9 void OperationA() 10 { 11 cout<< "System A Operation....."<< endl; 12 } 13 }; 14 15 class STSystemB 16 { 17 public: 18 void OperationB() 19 { 20 cout<< "System B Operation....."<< endl; 21 } 22 }; 23 24 class STSystemC 25 { 26 public: 27 void OperationC() 28 { 29 cout<< "System C Operation....."<< endl; 30 } 31 }; 32 33 class STFacade 34 { 35 public: 36 STFacade() 37 { 38 m_stSystemA = new STSystemA(); 39 m_stSystemB = new STSystemB(); 40 m_stSystemC = new STSystemC(); 41 } 42 43 virtual ~STFacade() 44 { 45 delete m_stSystemA; 46 delete m_stSystemB; 47 delete m_stSystemC; 48 } 49 50 void Operation() 51 { 52 m_stSystemA->OperationA(); 53 m_stSystemB->OperationB(); 54 m_stSystemC->OperationC(); 55 } 56 57 STSystemA* m_stSystemA; 58 STSystemB* m_stSystemB; 59 STSystemC* m_stSystemC; 60 61 }; 62 63 64 int main(int argc, char* argv[]) 65 { 66 STFacade* stFacade = new STFacade(); 67 stFacade->Operation(); 68 69 delete stFacade; 70 71 return 0; 72 } 73 ///////////////////////////////////// 74 [root@ ~/learn_code/design_pattern/11_facade]$ ./facade 75 System A Operation..... 76 System B Operation..... 77 System C Operation.....