外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口,看下类图:(我们以一个计算机的启动过程为例)

实现类:

public class CPU {  public void startup(){  System.out.println("cpu startup!");  }  public void shutdown(){  System.out.println("cpu shutdown!");  }
}  

public class Memory {  public void startup(){  System.out.println("memory startup!");  }  public void shutdown(){  System.out.println("memory shutdown!");  }
}  

public class Disk {  public void startup(){  System.out.println("disk startup!");  }  public void shutdown(){  System.out.println("disk shutdown!");  }
}  

public class Computer {  private CPU cpu;  private Memory memory;  private Disk disk;  public Computer(){  cpu = new CPU();  memory = new Memory();  disk = new Disk();  }  public void startup(){  System.out.println("start the computer!");  cpu.startup();  memory.startup();  disk.startup();  System.out.println("start computer finished!");  }  public void shutdown(){  System.out.println("begin to close the computer!");  cpu.shutdown();  memory.shutdown();  disk.shutdown();  System.out.println("computer closed!");  }
} 

public class User {  public static void main(String[] args) {  Computer computer = new Computer();  computer.startup();  computer.shutdown();  }
}  

输出:

start the computer!
cpu startup!
memory startup!
disk startup!
start computer finished!
begin to close the computer!
cpu shutdown!
memory shutdown!
disk shutdown!
computer closed!

如果我们没有Computer类,那么,CPU、Memory、Disk他们之间将会相互持有实例,产生关系,这样会造成严重的依赖,修改一个类,可能会带来其他类的修改,这不是我们想要看到的,有了Computer类,他们之间的关系被放在了Computer类里,这样就起到了解耦的作用,这,就是外观模式!

转载于:https://www.cnblogs.com/hwaggLee/p/4508553.html

Java设计模式-外观模式(Facade)相关推荐

  1. 设计模式:外观模式(Facade)

    外观模式(Facade)也叫过程模式, 外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 外观模式通过定义一个一致的接口,用以屏蔽内部子系 ...

  2. Java设计模式——外观模式【Facade Pattern】

    一.引言 23种设计模式大概分为三大类: 5种(创建型模式):工厂方法模式.抽象工厂模式.单例模式.原型模式.建造者模式. 7种(结构型模式):适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组 ...

  3. Java 设计模式——外观模式

    概述 今天要说的外观模式是一个相对简单的设计模式,而且在日常的开发中,可能你也会时常使用它,只是你可能并未想过这是一个设计模式.本文会从一些实例着手,来对本文要说明的外观模式进行尽可能全面的讲解.希望 ...

  4. Java设计模式--外观模式

    1 Facade Pattern 外观模式 目的:隐藏系统的复杂性,并对外提供了一个可以访问的接口,不必关心实现的细节: 实现:在客户端和复杂系统之间再加一层,这一层将调用顺序.依赖关系等处理好. 1 ...

  5. Java设计模式---外观模式

    外观模式(Facade) 外观模式的意图是:为子系统提供一个接口,便于它的使用. 解释: 简单的说,外观模式就是封装多个上层应用需要的方法,使得上层调用变得简单,为上层提供简单的接口,是设计模式中一种 ...

  6. Java设计模式-外观模式

    我又来了,继Java设计模式之桥接模式后,现在来到了外观模式啦,外观模式又称为门面模式啦

  7. 趣谈设计模式 | 外观模式(Facade):为子系统提供高粒度接口

    文章目录 案例:自动驾驶飞机 外观模式 总结 完整代码与文档 案例:自动驾驶飞机 随着自动驾驶汽车的大卖,特X拉开始把目标转向飞行领域,打算开发出一款能够完全自动行驶的飞机,系统初步的设计如下 我们将 ...

  8. 设计模式.外观模式Facade

    定义 外观模式,一般用在子系统与访问之间,用于对访问屏蔽复杂的子系统调用,采用耳目一新的外观类提供的简单的调用方法,具体的实现由外观类去子系统调用. 外观模式是一种中间件类型的模式,使用外观模式之后子 ...

  9. Java设计模式----------外观模式

    1.介绍 外观模式是一种结构型设计模式.在外观模式中,外观类中提供一个或者一组对外的接口.客户端对于复杂系统的访问是通过外观类的接口进行的,从而解除了客户端与复杂系统之间的耦合,隐藏了复杂系统内部的逻 ...

最新文章

  1. SAP_常用业务数据表
  2. 1689: 营救小明(bfs+priority_queue逆向思维)
  3. 深入浅出讲解MSE Nacos 2.0新特性
  4. SAP云平台,区块链,超级账本和智能合约
  5. 差分隐私中随机响应的抛硬币问题(LDP)
  6. java 不能同时修改一条记录_【免费毕设】JAVA+SQL离散数学题库管理系统(源代码+论文+外文翻译)...
  7. mysql教程查询语句_最全的mysql查询语句整理
  8. Microsoft强大团队(源代码)管理工具--TFS2010 与vs结合
  9. 1.1 文本表示——离散形式表示
  10. linux内核源码分析plat-form 分析
  11. JSONArray.fromObject(str)
  12. CMD 命令 复制多级子目录特定文件
  13. 中国省市县信息JS文件(省--市--县)
  14. HTML 制作钓鱼网站实现跳转(简篇)
  15. VMware 虚拟机安装 xp 蓝屏解决方法
  16. android 11.0 12.0Camera2 去掉后置摄像头 仅支持前置摄像头功能
  17. 2008 r2 server sql 中文版补丁_Microsoft SQL Server 2008 r2 sp2补丁 64位 官方免费版
  18. 2021年起重机司机(限桥式起重机)考试题库及起重机司机(限桥式起重机)考试试卷
  19. python办公自动化(6)——读取word文档
  20. create view 和 create or replace view的区别

热门文章

  1. Android 用户界面---样式和主题(Styles and Themes)(二)
  2. SharePoint GridView的使用2——DataSourceView的使用
  3. cAdvisor+InfluxDB+Grafana 监控Docker
  4. 在 Intellij IDEA 里使用 OpenJFX (JavaFX)
  5. 使用ifconfig取出网卡eth0的ip地址
  6. 【VBA编程】10.自定义集合
  7. 【转载】Direct3D基础知识
  8. ORA-00119错误的解决。
  9. Android自定义view之圆形进度条
  10. Rails不用localhost访问的时候很慢