15.设计模式之外观模式
程序员文章站
2022-03-02 20:25:14
...
定义:提供了一个统一接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用
最少知识原则:只和你的密友谈话。
解释:不要让太多的类耦合在一起,免得修改系统中一部分,会影响到其它部分。如果许多类之间相互依赖,那么这个系统就会变得易碎。
例子:
用户在键盘上点击开机键,然后加载CPU,内存,硬盘驱动等信息,但是,客户只点了开机键,其它的执行内容对于客户而言是透明的。流程图如下:
代码:
1. CPU类
/** * * @Description: * CPU类 * @author king * @version 1.0 */ public class Cpu { public void execute(){ System.out.println("CPU正在启动....."); } }
2. 内存类
package com.myplay.facade; /** * * @Description: 内存类 * @author king * @version 1.0 */ public class Memeory { public void execute() { System.out.println("内存正在启动....."); } }
3. 硬盘驱动类
/** * * @Description: * 硬盘驱动类 * @author king * @version 1.0 */ public class HardDriver { //执行的方法 public void execute() { System.out.println("硬盘驱动正在加载....."); } }
4. 键盘类
/** * * @Description: * 键盘类 * @author king * @version 1.0 */ public class KeyBorad { public void clickButton(String command){ if("start".equals(command)){ new Cpu().execute(); new Memeory().execute(); new HardDriver().execute(); } } }
5.客户类
/** * * @Description: * 客户类 * @author king * @version 1.0 */ public class Client { private KeyBorad keyBorad = new KeyBorad(); public void start(){ keyBorad.clickButton("start"); } }
6. 运行类:
/** * * @Description: * 运行类 * @author king * @version 1.0 */ public class Run { public static void main(String[] args) { Client client = new Client(); client.start(); } }
7.运行结果:
CPU正在启动.....
内存正在启动.....
硬盘驱动正在加载.....
以上是我对外观模式的理解。主要就是类的封装。
另,推广一下上班菜鸟技术群:207974203
上一篇: lucene4.x的分组实现
下一篇: 14.设计模式之适配器模式
推荐阅读
-
JavaScript设计模式精华摘抄(持续更新...)-考拉阅读前端团队-SegmentFault思否
-
《Head First 设计模式》代码之PHP版(面向对象学习)第1/2页
-
js 设计模式——状态模式
-
Java设计中的Builder模式的介绍
-
c#设计模式之单例模式的实现方式
-
23种GoF设计模式概述
-
React组件设计模式之组合组件应用实例分析
-
Mybaits 源码解析 (十一)----- 设计模式精妙使用:静态代理和动态代理结合使用:@MapperScan将Mapper接口生成代理注入到Spring
-
设计模式之单例模式(懒汉式单例、饿汉式单例、登记式单例)
-
Spring,SpringMvc,MyBatis用到的设计模式