Java设计模式设计模式

《设计模式》外观模式

2019-08-25  本文已影响3人  敏捷Studio

基本介绍

定义

要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口,使得子系统更易于使用。

介绍

UML类图

外观模式UML类图

角色说明:

具体实现

我们玩游戏时一般都有登录和充值等操作,这些一般都是第三方SDK来完成。游戏研发一般只需进行简单的接入就可以使用登录充值功能了。我们来实现一个简单的游戏SDK:

1、创建外观角色。这里只要是封装游戏SDK对外的接口,供游戏去研发去调用。这里只有两个接口:登录和充值。

public class GameSdk {
  // 登录接口
  public void login() {
    // 调用登录子系统的接口
    LoginManager loginManager = new LoginManager();
    loginManager.login();
  }

  // 支付接口
  public void pay(int momey) {
    // 调用支付子系统的接口
    PayManager payManager = new PayManager();
    payManager.pay(momey);
  }
}

2、子系统

// 登录系统
public class LoginManager {
  public void login() {
    System.out.println("打开登录界面");
    System.out.println("进行登录操作");
    System.out.println("登录成功");
  }
}

// 支付系统
public class PayManager {
  public void pay(int momey) {
    System.out.println("生成订单信息");
    System.out.println("选择支付方式");
    System.out.println("支付成功:" + momey + "元");
  }
}

3、客户端测试:

private void test() {
  // 这里是游戏研发,通过调用login()和pay()就能调起登录和支付,无需关心支付是使用支付宝还是威信等,这是游戏SDK里面去做的事。
  GameSdk gameSdk = new GameSdk();
  gameSdk.login();
  gameSdk.pay(6);
}

输出结果:

打开登录界面
进行登录操作
登录成功
生成订单信息
选择支付方式
支付成功:6元

模式总结

应用场景

优点

缺点

Android中的源码分析

外观模式在Android中应用也非常广泛,比如Context类,里面封装了很多方法,还是以startActivity()方法为例。实际上startActivity()是通过ActivityManagerService来实现的,ActivityManagerService我们应该都有耳闻,但是实际开发中一般都用不到,通过封装的方式,Context类隐藏了这些细节,我们只要简单调个方法就可以启动一个新的Activity
这就是外观模式在Android应用的例子了。当然这种应用比比皆是,我们平时开发也经常用的到。

上一篇下一篇

猜你喜欢

热点阅读