23种设计模式之结构型模式:外观模式

一:什么是外观模式

外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供一个可以访问系统的接口
这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

二:进一步了解外观模式

目的
为功能接口提供一个高层接口,这个高层接口使得这些功能接口更加容易使用。

主要解决
降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。

什么时候使用:
1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。
2、定义系统的入口。

关键代码:
在客户端和复杂系统之间再加一层,这一层将调用顺序、依赖关系等处理好。

优点:
1、减少系统相互依赖。
2、提高灵活性。
3、提高了安全性。

缺点:不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。

三:实现

定义一个等级接口,它有三个实现类,再定义一个统一管理这三个实现类的外观类,类中方法调用实现类方法

等级接口

public interface Grade {
    void toLevel();
}

等级一

//等级一
public class LevelOne implements Grade {
    @Override
    public void toLevel() {
        System.out.println("等级一");
    }
}

等级二

//等级二
public class LevelTwo implements Grade {
    @Override
    public void toLevel() {
        System.out.println("等级二");
    }
}

等级三

//等级三
public class LevelThree implements Grade {
    @Override
    public void toLevel() {
        System.out.println("等级三");
    }
}

外观类,包含所有等级

//外观类,包含所有等级
public class AllLevel {
    private LevelOne levelOne;
    private LevelTwo levelTwo;
    private LevelThree levelThree;

    public AllLevel() {
        this.levelOne   = new LevelOne();
        this.levelTwo   = new LevelTwo();
        this.levelThree = new LevelThree();
    }
    public void one(){
        levelOne.toLevel();
    }
    public void two(){
        levelTwo.toLevel();
    }
    public void three(){
        levelThree.toLevel();
    }
}

测试类

//测试类
public class Test {
    public static void main(String[] args) {
        AllLevel allLevel = new AllLevel();
        allLevel.one();
        allLevel.two();
        allLevel.three();
    }
}

测试结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值