介绍
为子系统的一组接口提供一个一致的界面,Facade模式定义了一个高层的接口,这使得子系统更加容易使用。
外观模式参与者
- Facade 外观
- Subsystem 子系统
例如:你要出去旅游,首先买票,然后游玩,然后坐车回来。
实现代码
class BuyTickets{//Subsystem
public:
void buying(){
std::cout<<"先买票"<<std::endl;
}
};
class Travel{//Subsystem
public:
void travling(){
std::cout<<"游玩ing........."<<std::endl;
}
};
class BackHome{//Subsystem
public:
void back(){
std::cout<<"回家了"<<std::endl;
}
};
class Facade{//Facade
public:
void working(){
auto buy = new BuyTickets();
auto travel = new Travel();
auto backHome = new BackHome();
buy->buying();
travel->travling();
backHome->back();
delete buy;
delete travel;
delete backHome;
}
};
int main()//客户端调用
{
//一般我们这么做
auto buy = new BuyTickets();
auto travel = new Travel();
auto backHome = new BackHome();
buy->buying();
travel->travling();
backHome->back();
std::cout<<"---------------------------------------------"<<std::endl;
//外观模式这么做
Facade facade;
facade.working();
}
优点
- 对用户屏蔽子系统组件
- 实现子系统与用户之间松耦合的关系
参考
《设计模式:可复用面向对象软件的基础》
网友评论