北风设计模式课程---15、外观模式

北风设计模式课程---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子系统功能");
    }
}
 
原文地址:https://www.cnblogs.com/Renyi-Fan/p/11031158.html