设计模式之外观模式

Posted suyang-java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之外观模式相关的知识,希望对你有一定的参考价值。

    外观模式又叫门面模式,在平时的开发中使用的极其的频繁但是却非常的简单。使用外观模式可以让客户端轻松的调用复杂的系统接口,因为客户端根本不关心子系统的内部是如何实现的,他们只需要调用门面类提供的方法即可。

    举个例子,在日常生活中我们启动一台电脑只需要按一个开关即可,但是启动一台电脑的过程其实是很复杂的,可是作为用户我们并不关心电脑的启动的流程。所以门面模式是很贴切我的日常生活的。下面我们用代码来表示门面模式。首先定义Cpu类、显示屏类,内存类。

//cpu类
public class Cpu {
    public void start(){
        System.out.println("computer的cpu启动了");
    }
    
    public void stop(){
        System.out.println("computer的cpu关闭了");
    }
}


//显示屏类
public class DisplayScreen {
    public void start(){
        System.out.println("computer的显示屏启动了");
    }
    
    public void stop(){
        System.out.println("computer的显示屏关闭了");
    }
}

//内存类
public class Memory {
    public void start(){
        System.out.println("computer的内存启动了");
    }
    
    public void stop(){
        System.out.println("computer的内存关闭了");
    }
}

接下来我们定义一个电脑的门面类:

public class ComputerFade {
    private Cpu cpu;
    private DisplayScreen displayScreen;
    private Memory memory;
    
    public ComputerFade(){
        this.cpu = new Cpu();
        this.displayScreen = new DisplayScreen();
        this.memory = new Memory();
    }
    
    public void start(){
        this.cpu.start();
        this.displayScreen.start();
        this.memory.start();
        System.out.println("computer的启动了");
    }
    
    public void stop(){
        this.cpu.stop();
        this.displayScreen.stop();
        this.memory.stop();
        System.out.println("computer的关闭了");
    }
}

客户端调用:

 public static void main(String[] args) {
        ComputerFade computerFade = new ComputerFade();
        computerFade.start();
        System.out.println("==========================");
        computerFade.stop();
    }

执行结果:

computer的cpu启动了
computer的显示屏启动了
computer的内存启动了
computer的启动了
==========================
computer的cpu关闭了
computer的显示屏关闭了
computer的内存关闭了
computer的关闭了


门面模式可以让客户端和子系统之间解耦,对于用户隐藏了内部实现的细节,相比其他的设计模式,门面设计模式还是比较好掌握的。











以上是关于设计模式之外观模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之- 外观模式(Facade Pattern)

Java设计模式之外观模式(facade)

设计模式之外观模式

设计模式之外观模式 Facade

设计模式之代理模式适配器模式和外观模式

java 之 外观模式(大话设计模式)