一、什么是外观模式
Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。
Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。
这个一致的简单的界面被称作facade。
二、外观模式的结构
三、外观模式的角色和职责
Facade :为调用方定义简单的调用接口。
Clients : 调用者。通过Facade接口调用提供某功能的内部类群。
Packages : 功能提供者。指提供功能的类群(模块或子系统)
四、代码示例实现
public class Basketball {
public void playBasketball(){
System.out.println("打篮球");
}
}
public class Pingpang {
public void playPingpang(){
System.out.println("打乒乓球");
}
}
public class Football {
public void playFootball(){
System.out.println("踢足球");
}
}
/**
* 为客户提供一个一致的简单界面
*/
public class PlayFacade {
private Basketball basketball;
private Pingpang pingpang;
private Football football;
public PlayFacade() {
basketball = new Basketball();
pingpang = new Pingpang();
football = new Football();
}
/*
选手A,都会玩
*/
public void playerA(){
this.football.playFootball();
this.pingpang.playPingpang();
this.basketball.playBasketball();
}
/*
选手B,会玩足球和篮球
*/
public void playerB(){
this.basketball.playBasketball();
this.football.playFootball();
}
}
测试:
public class TestFacade {
public static void main(String[] args) {
// Basketball basketball = new Basketball();
// basketball.playBasketball();
// 上述实现方式,需要在实现每一个方法的时候,创建对应的运动员实例
Facade facade = new Facade();
/* 踢足球
打乒乓球
打篮球*/
facade.playerA();
/* 打篮球
踢足球*/
facade.playerB();
}
}