其他分享
首页 > 其他分享> > 16、门面模式

16、门面模式

作者:互联网

文章目录


package com.example.demo.designpattern;

/**
 * 门面模式/外观模式;结构型模式;
 * 隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。它向现有的系统添加一个接口,来隐藏系统的复杂性;
 * 门面模式提供一个高层次的接口, 使得子系统更易于使用;
 * 应用:Tomcat-RequestFacade;slf4j;jdbc;socket
 * 角色:
 * - facade 门面角色:客户端可以调用这个角色的方法。 此角色知晓子系统的所有功能和责任。
 * - sub_system 子系统角色:子系统并不知道门面的存在。 对于子系统而言, 门面仅仅是另外一个客户端而已。
 */
public class Facade {
    private SubSystemA subSystemA;
    private SubSystemB subSystemB;

    public Facade(SubSystemA subSystemA, SubSystemB subSystemB) {
        this.subSystemA = subSystemA;
        this.subSystemB = subSystemB;
    }

    public Facade() {
        this.subSystemA = new SubSystemA();
        this.subSystemB = new SubSystemB();
    }

    public void aWork() {
        this.subSystemA.doWork();
    }

    public void bWork() {
        this.subSystemB.doWork();
    }
}

class SubSystemA {
    public void doWork() {
        System.out.println("work");
        this.go();
    }

    private void go() {
        System.out.println("go go");
    }
}


class SubSystemB {
    public void doWork() {
        System.out.println("sleep");
        this.go();
    }

    private void go() {
        System.out.println("back back");
    }
}

class ClientFacade{
    public static void main(String[] args) {
        Facade facade = new Facade();

        facade.aWork();
        facade.bWork();
    }
}

标签:Facade,16,void,模式,subSystemA,go,subSystemB,门面,public
来源: https://blog.csdn.net/wwq921220/article/details/117754099