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();
    }
}
上一篇:Django电商项目(九)用户中心-订单页、支付宝对接、订单评论


下一篇:拼多多商品详情销量,实时库存,sku,详情信息,促销价,优惠券信息等