java会话外观模式_java设计模式--外观模式

外观模式:为子系统中的一组接口提供一个一致的界面,该模式定义了一个高层接口,这个接口使这个子系统更加容易使用。

我们先看一个使用外观模式的例子,首先定义了三个子系统类

public classSubSystemA {public voidfunctionA(){

System.out.println("子系统A方法");

}

}public classSubSystemB {public voidfunctionB(){

System.out.println("子系统B方法");

}

}public classSubSystemC {public voidfunctionC(){

System.out.println("子系统C方法");

}

}

使用外观模式定义了一个高层接口,这个接口定义了调用子系统的方法

public interfaceFacade {voidmethodA();voidmethodB();voidmethodC();

}

接口调用子系统的具体实现

public class FacadeImpl implementsFacade {privateSubSystemA subSystemA;privateSubSystemB subSystemB;privateSubSystemC subSystemC;publicFacadeImpl(){

subSystemA= newSubSystemA();

subSystemB= newSubSystemB();

subSystemC= newSubSystemC();

}

@Overridepublic voidmethodA() {

System.out.println("methodA");

subSystemA.functionA();

}

@Overridepublic voidmethodB() {

System.out.println("methodB");

subSystemB.functionB();

subSystemC.functionC();

}

@Overridepublic voidmethodC() {

System.out.println("methodC");

subSystemA.functionA();

subSystemC.functionC();

}

}

使用外观模式的调用方法

public classTest1 {public static voidmain(String[] args) {

Facade facade= newFacadeImpl();

facade.methodA();

facade.methodB();

facade.methodC();

}

}

执行结果:

methodA

子系统A方法

methodB

子系统B方法

子系统C方法

methodC

子系统A方法

子系统C方法

下面是没有使用外观模式时客户端的调用方法

public classTest2 {public static voidmain(String[] args) {

SubSystemA subSystemA= newSubSystemA();

SubSystemB subSystemB= newSubSystemB();

SubSystemC subSystemC= newSubSystemC();

subSystemA.functionA();

System.out.println("----------------");

subSystemB.functionB();

subSystemC.functionC();

System.out.println("----------------");

subSystemA.functionA();

subSystemC.functionC();

}

}

执行结果:

子系统A方法

----------------

子系统B方法

子系统C方法

----------------

子系统A方法

子系统C方法

通过对比我们可以发现外观模式定义了一个外观类Facade,这个类了解所有子系统的方法和属性,在其内部进行组合后客户端进行调用,如果不使用外观模式,客户端需要去了解所有子系统中的类和属性,有了外观模式,客户端只需要知道外观类Facade就可以了。

我们经常使用的三层架构就可以理解为一个外观模式的实例,如果没有service层,我们的controller层就可能需要直接去关联多个dao才能实现功能,这样就会出现多个controller和dao交叉关联,使系统越来越复杂,这时我们就可以抽象出一层service和dao接口使得耦合程

度降低,除此之外,在维护一个遗留的大型系统时,我们也可以抽象出一个接口,用这个接口去和这个旧系统交互,新系统只需要与外观类交互,这样可以使得代码维护的复杂程度大大降低。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值