外观模式
定义:
又叫门面模式,提供了一个统一的接口,用来访问子系统的一群接口
外观模式定义了一个高层接口,让子系统更容易使用
介绍:
结构型
子系统越来越复杂,增加外观模式提供简单调用接口
构建多层系统结构,利用外观对象作为每层的入口,简化层间调用
优点:
简化了调用过程,无需了解子系统,防止带来风险
减少系统依赖,松散耦合
更好的划分访问层次
符合迪米特法则,即最少知道原则
缺点:
增加子系统,扩展子系统行为容易引入风险
不符合开闭原则
实现
假设我们要提供一个游戏sdk,包含了 初始化,登录,支付等方法
我们要做的就是对外提供一个 sdk管理类,并暴露对应的方法,具体实现如下
public class GameSdk {
private GameSdk() {
}
private static GameSdk instance;
public static GameSdk getInstance() {
if (null == instance) {
synchronized (GameSdk.class) {
if (null == instance) {
instance = new GameSdk();
}
}
}
return instance;
}
public void init() {
new GameInitService().init();
}
public void login() {
new GameLoginService().login();
}
public void pay() {
new GamePayService().pay();
}
}
接下来是 初始化 登录 支付 部分的逻辑
public class GameInitService {
public void init() {
System.out.println("初始化成功");
}
}
public class GameLoginService {
public void login() {
System.out.println("用户登录成功");
}
}
public class GamePayService {
public void pay() {
System.out.println("支付成功");
}
}
测试代码如下
public class Test {
public static void main(String[] args) {
GameSdk.getInstance().init();
GameSdk.getInstance().login();
GameSdk.getInstance().pay();
}
}
输出结果
初始化成功
用户登录成功
支付成功