博客
关于我
11【结构型】浅谈 外观模式 理解与使用~
阅读量:445 次
发布时间:2019-03-05

本文共 1648 字,大约阅读时间需要 5 分钟。

外观模式

外观模式,用于隐藏系统的复杂性,并且向客户端提供一个可以操作访问系统的接口,来隐藏系统的复杂性。

 

举个例子:

好比系统就是我们手里面的一台电脑,我们都知道,电脑内部很复杂,但是我们操作的时候,就好比只需要摁一下开机按钮,电脑就会启动起来,

我们无需关注电脑是如何启动起来的。这就好比一个复杂的系统,通过一个电源键的操作,使得整个复杂的过程变得简化。客户端只需要关注这个简化的

接口(电源键)即可操作复杂系统。

用途:降低复杂系统的内部复杂联系,整个系统只需要提供一个简便的方法即可(电源键启动方法)

关键:要处理好客户端和复杂系统之间的一层层的调用关系。好比首先要启动CPU,然后再给内存供电,最后读取硬盘数据 这种顺序要处理好!!

优点:减少系统依赖性、提高整个系统的灵活性、

使用:一个复杂的模块为子系统提供访问模块

 

代码理解:

这里建立一个模型:电脑的模型,我们来模拟一个电脑的启动和关闭过程,按下电源键:CPU供电,然后给内存供电,最后读取硬盘数据,显示开机画面等

断电后,依次关闭以上开启的内容

 

电脑最基本的两个方法,启动和关闭方法。

public interface Computer {    //启动方法    void start();    //结束方法    void end();}

这里分别建立三个类来实现电脑的接口,有CPU/内存/硬盘 这里只是举例一个CPU的启动和关闭过程,其他的就不一一举例

public class CPU implements Computer {    @Override    public void start() {        System.out.println("CPU供电完成");    }    @Override    public void end() {        System.out.println("CPU断电关闭");    }}

这里提供的一个客户端,就好比一个电源按钮,实例化一个电源键,创建好需要的对象信息,按下电源键执行open方法,按照顺序构建

public class Face {        //实例化后的CPU 内存与硬盘    private Computer cpu;    private Computer memory;    private Computer hdd;    //开机构建    public Face(){        //创建CPU/内存/硬盘        cpu = new CPU();        memory = new Memory();        hdd = new HDD();    }    //启动电脑    public void open(){        cpu.start();        memory.start();        hdd.start();    }    //关闭电脑    public void close(){        cpu.end();        memory.end();        hdd.end();    }}

//进行一个简单的测试

public static void main(String[] args) {                //创建客户端,实例化电源按钮        Face face = new Face();        //电源按钮启动        face.open();        System.out.println("----------------------");        face.close();    }

效果展示:

 

这里就简单的模拟一个电脑启动的方式来理解这个外观模式的使用:

最好的理解方法就是参考生活中的常识去理解,这样才更加深刻理解,更好的学会去使用它;

 

参考:

码云:

 

转载地址:http://rgozz.baihongyu.com/

你可能感兴趣的文章
Mysql8.0以上重置初始密码的方法
查看>>
mysql8.0新特性-自增变量的持久化
查看>>
Mysql8.0注意url变更写法
查看>>
Mysql8.0的特性
查看>>
MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
查看>>
MySQL8修改密码的方法
查看>>
Mysql8在Centos上安装后忘记root密码如何重新设置
查看>>
Mysql8在Windows上离线安装时忘记root密码
查看>>
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
查看>>
mysql8的安装与卸载
查看>>
MySQL8,体验不一样的安装方式!
查看>>
MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
查看>>
Mysql: 对换(替换)两条记录的同一个字段值
查看>>
mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
查看>>
MYSQL:基础——3N范式的表结构设计
查看>>
MYSQL:基础——触发器
查看>>
Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
查看>>
mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
查看>>
mysqldump 参数--lock-tables浅析
查看>>
mysqldump 导出中文乱码
查看>>