外观模式
定义:为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。
外观模式就只有一个角色,经过内部实例逻辑处理之后提供外部方法。外观模式是最最最简单又最最最常用的模式,我们经常在使用却不知道叫外观模式,我个人觉得这不像设计模式。它作用在很多第三方SDK里,给调用者提供一些API,只要调用就好了,不需要了解内部实现。这里以模拟支付SDK为例,首先将用户的信息和商品进行加密,然后发送到服务器。
代码示例
外观类
public class PayHelper {
private User user = new User();
private Encode encode = new Encode();
private Remote remote = new Remote();
public void pay(String product) {
String userInfo = user.getUserInfo();
String encodedStr = encode.encode(product + userInfo);
remote.sendRemote(encodedStr);
}
}
各类
public class User {
public String getUserInfo(){
System.out.println("获取用户信息");
return "张三18岁";
}
}
public class Encode {
public String encode(String s) {
System.out.println("加密处理");
return "加密" + s;
}
}
public class Remote {
public void sendRemote(String d){
System.out.println("发送到服务器");
}
}
客户端
PayHelper payHelper = new PayHelper();
payHelper.pay("毛巾");
输出为:
获取用户信息
加密处理
发送到服务器
对于调用者没必要了解内部实现,也不会让你知道怎么实现。只要调用PayHelper外观类就可以完成一系列的行为。外观模式的核心在于封装,对外的调用者带来方便,有时候我们就需要建立辅助类工具类简化外部的使用。不足之处望指教。