定义
将一组接口统一成一个接口,属于结构型模式。
应用场景
1.客户端为完成某个功能需要请求多个接口 2.需要合并复杂的子系统
优点
1.接口安全
2.客户端请求接口简单化
缺点
修改起来复杂
常见实例
- Context可以打开Activity,可打开Service,广播等
具体代码实现
例子说明:提供一个方法供外部访问,该方法可以执行很多方法。
接口
package com.elaine.testpattern.facade;
/**
* 接口
* author: elaine
* date: 2021/4/27
*/
public interface Player {
/**
* 运动
*/
void play();
}
实体
下棋爱好者
package com.elaine.testpattern.facade;
import android.util.Log;
/**
* 棋类爱好者
* author: elaine
* date: 2021/4/27
*/
public class ChessPlayer implements Player {
@Override
public void play() {
Log.e("player", "ChessPlayer====play chess");
}
}
打球爱好者
package com.elaine.testpattern.facade;
import android.util.Log;
/**
* 球类运动员
*
* author: elaine
* date: 2021/4/27
*/
public class BallPlayer implements Player{
@Override
public void play() {
Log.e("player", "BallPlayer====play ball");
}
}
小提琴演奏家
package com.elaine.testpattern.facade;
import android.util.Log;
/**
* 小提琴演奏家
* author: elaine
* date: 2021/4/27
*/
public class ViolinPlayer implements Player {
@Override
public void play() {
Log.e("player", "ViolinPlayer====play violin");
}
}
统一管理
package com.elaine.testpattern.facade;
/**
* 统一的接口
*
* author: elaine
* date: 2021/4/27
*/
public class PlayerFacade {
private final BallPlayer ballPlayer;
private final ChessPlayer chessPlayer;
private final ViolinPlayer violinPlayer;
public PlayerFacade() {
ballPlayer = new BallPlayer();
chessPlayer = new ChessPlayer();
violinPlayer = new ViolinPlayer();
}
public void play() {
ballPlayer.play();
chessPlayer.play();
violinPlayer.play();
}
}
运行代码
private void use() {
PlayerFacade playerFacade = new PlayerFacade();
playerFacade.play();
}