Bootstrap

设计模式——外观模式

目录

概念

实例代码

实例背景:

代码

子系统类

外观类


概念

外观模式:为子系统中的一组接口提供一个一致的界面 , 此模式定义了一个高层模式 , 这个接口使得这一子系统更加容易使用。

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;
    }
}

将子系统的类 集成于 外观类中 。

有一丝  “代理模式” 的意味了 , 但在之前我们的案例中 , 代理模式只针对于一个“子系统类”。

;