美文网首页
外观模式(Facade)

外观模式(Facade)

作者: Greedy_TZG | 来源:发表于2019-03-03 18:20 被阅读0次

基本概念

外观模式,他隐藏了系统的复杂性,并且向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。

使用场景

该模式就是把一些复杂的流程封装成一个接口i提供给外部用户更简单的使用。
主要涉及到3个角色:

1)门面(Facade)角色:

外观模式的核心,它被客户(Client)角色调用,它熟悉子系统的功能。内部可以根据客户角色的需求预定了几种功能的组合。

2)子系统(Module)角色:

实现了子系统的功能,它对客户(Client)角色是未知的。门面(Facade)角色知道子系统(Module)角色的,但是子系统(Module)不应该知道门面(Facade)角色。

3)客户(Client)角色:

通过调用门面(Facade)角色实现各种功能。

DEMO

/**
 * cpu子系统类
 * 他是不知道Facade类的
 * 他是CPU功能的实现
 */
public class CPU 
{
    public static final Logger LOGGER = Logger.getLogger(CPU.class);
    public void start() {
        LOGGER.info("cpu is start...");
    }
    
    public void shutDown() {
        LOGGER.info("CPU is shutDown...");
    }
}
/**
 * Disk子系统类
 * 他是不知道Facade类的
 * 他是Disk功能的实现
 */
public class Disk
{
    public static final Logger LOGGER = Logger.getLogger(Disk.class);
    public void start() {
        LOGGER.info("Disk is start...");
    }
    
    public void shutDown() {
        LOGGER.info("Disk is shutDown...");
    }
}
/**
 * Memory子系统类
 * 他是不知道Facade类的
 * 他是Memory功能的实现
 */
public class Memory
{
    public static final Logger LOGGER = Logger.getLogger(Memory.class);
    public void start() {
        LOGGER.info("Memory is start...");
    }
    
    public void shutDown() {
        LOGGER.info("Memory is shutDown...");
    }
}
/**
 * 门面类(核心)
 * 这个是暴露给外部的门面
 */
public class Computer
{
    public static final Logger LOGGER = Logger.getLogger(Computer.class);
    
    private CPU cpu;
    private Memory memory;
    private Disk disk;
    public Computer() {
        cpu = new CPU();
        memory = new Memory();
        disk = new Disk();
    }
    public void start() {
        LOGGER.info("Computer start begin");
        cpu.start();
        disk.start();
        memory.start();
        LOGGER.info("Computer start end");
    }
    
    public void shutDown() {
        LOGGER.info("Computer shutDown begin");
        cpu.shutDown();
        disk.shutDown();
        memory.shutDown();
        LOGGER.info("Computer shutDown end...");
    }
}
/**
 * 客户端类
 * 通过门面角色即可实现开机关机的功能
 * 而不需要了解其内部的实现
 */
public class Cilent {
    public static final Logger LOGGER = Logger.getLogger(Cilent.class);
    public static void main(String[] args) {
        Computer computer = new Computer();
        computer.start();
        LOGGER.info("=================");
        computer.shutDown();
    }

}

相关文章

  • Android 设计模式入门到精通之十:外观模式(Facade

    外观模式(Facade Pattern,门面模式) 1. 概念 Facade Pattern: Provide a...

  • Android设计模式——外观模式(七大结构型)

    1.外观模式介绍 外观模式(Facade Pattern),是七大结构型设计模式之一。 外观模式运...

  • 外观模式(Facade)

    定义外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一...

  • 外观模式-facade

    为子系统中的一组接口提供一个一致的界面,facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 代...

  • 外观模式(Facade)

    1、概念 外观模式是外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,...

  • 外观模式(Facade)

    外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口是的这一子系统...

  • 外观模式(Facade)

    为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 类型 结...

  • 外观模式-Facade

    外观模式是为了解决类与类之间依赖关系的,外观模式将类间关系放在一个Facade类中,降低了类类之间的耦合度,该模式...

  • 外观模式(Facade)

    文章转自iOS设计模式:外观模式 基本概念 外观模式:为子系统的一组接口提供一个一致的界面,此模式定义一个高层接口...

  • 外观模式(facade)

    facade模式是为了简化操作,使用组合的方式提供一个统一的入口,而隐藏细节。 一般程序设计中很少使用外观模式,只...

网友评论

      本文标题:外观模式(Facade)

      本文链接:https://www.haomeiwen.com/subject/ikrmuqtx.html