java设计模式十二之外观模式

本文详细介绍了外观模式的概念及其在软件设计中的应用。通过具体实例展示了如何使用外观对象来封装子系统的复杂性,降低调用者与子系统之间的耦合度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

    外观模式,也叫Facade模式,当外部客户端与子系统通信时,通过外观对象进行通信。外观对象提供了调用子系统的各种接口。一般可以把外观对象设置成单例的。

优点:

    降低调用者与子系统的耦合,隐藏了子系统的实现细节,同时更利于维护


怎么实现:

    Facede外观对象:对子系统进行封装调用

    子系统对象:可能存在多个

    调用者:客户端调用者


代码:

    子系统A:

package com.xhx.designpattern;

/**
 * xuhaixing
 * 2018/6/30 11:32
 **/
public class ModuleA {
    public void aMethod(){
        System.out.println("我是A系统方法");
    }
}

子系统B:

package com.xhx.designpattern;

/**
 * xuhaixing
 * 2018/6/30 11:32
 **/
public class ModuleB {
    public void bMethod(){
        System.out.println("我是B系统方法");
    }
}

子系统C:

package com.xhx.designpattern;

/**
 * xuhaixing
 * 2018/6/30 11:32
 **/
public class ModuleC {
    public void cMethod(){
        System.out.println("我是C系统方法");
    }
}

外观对象:里面封装了各种组合调用子系统的方法

package com.xhx.designpattern;

/**
 * xuhaixing
 * 2018/6/30 11:33
 *
 * 外观对象,提供过了对子系统的封装,
 * 外部客户端通过调用外观对象对内部系统进行访问。避免子系统内部实现细节
 **/
public class Facade {
    private ModuleA moduleA;
    private  ModuleB moduleB;
    private ModuleC moduleC;
    public Facade(){
        moduleA = new ModuleA();
        moduleB = new ModuleB();
        moduleC = new ModuleC();
    }

    public void doABC(){
        moduleA.aMethod();
        moduleB.bMethod();
        moduleC.cMethod();
    }

    public void doAB(){
        moduleA.aMethod();
        moduleB.bMethod();
    }
    public void doAC(){
        moduleA.aMethod();
        moduleC.cMethod();
    }
}


客户端调用者:

package com.xhx.designpattern;

/**
 * xuhaixing
 * 2018/6/30 11:23
 **/
public class App {
    public static void main(String[] args) {
        Facade facade= new Facade();
        facade.doAB();
    }
}

我的github代码地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值