北风设计模式课程---15、外观模式
一、总结
一句话总结:
不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例
设计模式都是对生活的抽象,比如用户获得装备,我可以先装备工厂先生产出来装备,然后给宗门武器库,宗门武器库发给我,如果是打怪获得的装备,可以是装备工厂把装备给的怪物装备库
1、外观模式的最大好处是什么?
客户端不需要知道具体调用哪个子系统,直接交给中间层即可,客户端直接调用中间层
2、外观模式的核心是什么?
中间层:提供一个中间层,来提供和客户端以及底层之间的调用,这样客户端不必知道底层如何实现
3、什么是外观模式?
一致的简单的界面:Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。
Facade模式也叫外观模式,是由GoF提出的
23种设计模式中的一种。Facade模式为一组具
有类似功能的类群,比如类库,子系统等等,提
供一个一致的简单的界面。这个一致的简单的界
面被称作facade。
4、外观模式的角色和职责?
Facade:为调用方定义简单的调用接口。
Clients:调用者。通过Facade接口调用提供某功能的内部类群。
Packages:功能提供者。指提供功能的类群(模块或子系统)。
5、外观模式 中的 参考代码 角色实例?
Facade:Facade.java
Clients:MainClass.java、MainClass2.java
Packages:SystemA.java、SystemB.java、SystemC.java
二、内容在总结中
1、相关知识
Facade:Facade.java
Clients:MainClass.java、MainClass2.java
Packages:SystemA.java、SystemB.java、SystemC.java
2、代码
Facade:Facade.java
public class Facade { private SystemA systemA; private SystemB systemB; private SystemC systemC; public Facade() { systemA = new SystemA(); systemB = new SystemB(); systemC = new SystemC(); } public void doABC() { this.systemA.doSomething(); this.systemB.doSomething(); this.systemC.doSomething(); } public void doAB() { this.systemA.doSomething(); this.systemB.doSomething(); } }
Clients:MainClass.java
public class MainClass { public static void main(String[] args) { Facade facade = new Facade(); facade.doABC(); } }
Clients:MainClass2.java
public class MainClass2 { public static void main(String[] args) { Facade facade = new Facade(); facade.doAB(); } }
Packages:SystemA.java
/* * A子系统 */ public class SystemA { /* * A子系统实现功能 */ public void doSomething() { System.out.println("实现A子系统功能"); } }
Packages:SystemB.java
/* * B子系统 */ public class SystemB { /* * B子系统实现功能 */ public void doSomething() { System.out.println("实现B子系统功能"); } }
Packages:SystemC.java
/* * C子系统 */ public class SystemC { /* * C子系统实现功能 */ public void doSomething() { System.out.println("实现C子系统功能"); } }