目录
概念
外观模式:为子系统中的一组接口提供一个一致的界面 , 此模式定义了一个高层模式 , 这个接口使得这一子系统更加容易使用。
1. 在早期开发过程中 , 应该要有意识的将不同的两个层分离,比如经典的三层架构,就需要考虑在数据访问层和业务逻辑层、业务逻辑层和表示层的层与层之间简历外观 FACADE。使得耦合大大降低。
2. 子系统因为不断的重构演化而变得越来越复杂 。
3. 在维护一个遗留的大型系统中 , 可能这个系统已经非常难以维护 和扩展,但因为它包含非常重要的功能,新的需求开发必须依赖它。
实例代码
实例背景:
在我们考虑买股票的时候 , 需要考虑到多种因素 , 其中就便随者许多风险或是回报 , 但倘若没有专业的投资知识 , 很容易成为韭菜…… 。 “基金” 便横空出世 , 我们只需要让有更多投资经验的基金经理购买相应的股票 , 我们只需要选择购买哪个基金经理的基金久可以了 , 其中的股票走向、趋势由基金经理管理。
代码
子系统类
// 股票类 1
public class Stock1 {
public void test1(){
System.out.println("this is stock1");
}
}
// 股票类 2
public class Stock2 {
public void test2(){
System.out.println("this is stock2");
}
}
外观类
public class Fund {
Stock1 stock1 = new Stock1();
Stock2 stock2 = new Stock2();
public void show(){
stock1.test1();
stock2.test2();
}
private Fund(){}
// 这里只是学习用 , 采用的单例 ,开发中并不推荐哈 ,
// 总不可能所有人买的基金都是一样的吧 0.0
public static Fund Instance;
public static Fund getInstance() {
if(Instance == null) {
synchronized (Fund.class) {
if(Instance == null) Instance = new Fund();
}
}
return Instance;
}
}
将子系统的类 集成于 外观类中 。
有一丝 “代理模式” 的意味了 , 但在之前我们的案例中 , 代理模式只针对于一个“子系统类”。