#pragma once
#include <iostream>
class SystemOne
{
public:
void methodOne()
{
std::cout << "methodOne" << std::endl;
}
};
class SystemTwo
{
public:
void methodTwo()
{
std::cout << "methodTwo" << std::endl;
}
};
class SystemThree
{
public:
void methodThree()
{
std::cout << "methodThree" << std::endl;
}
};
class SystemFour
{
public:
void methodFour()
{
std::cout << "methodFour" << std::endl;
}
};
class Facade
{
public:
Facade()
{
systemOne = new SystemOne();
systemTwo = new SystemTwo();
systemThree = new SystemThree();
systemFour = new SystemFour();
};
virtual ~Facade()
{
delete systemOne;
delete systemTwo;
delete systemThree;
delete systemFour;
};
void method()
{
systemOne->methodOne();
systemTwo->methodTwo();
systemThree->methodThree();
systemFour->methodFour();
};
private:
SystemOne* systemOne;
SystemTwo* systemTwo;
SystemThree* systemThree;
SystemFour* systemFour;
};
int main()
{
Facade* facade = new Facade();
facade->method();
return 0;
}