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

本文介绍了外观模式的概念及其应用案例。外观模式通过提供一个统一的接口来简化对子系统的使用,降低系统间的耦合度。

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

    外观模式又称门面模式,   所谓外观,就是为子系统对外提供的一组接口提供一个统一的界面,使其他系统对该系统的访问都是通过这个统一界面来完成的。

我们来看一个小例子:

某系统有三个类A类、B类、C类,分别完成某项功能:

 

package com.dxy.design.pattern.builder.facade;

public class A {
	
	public static void doSomething() {
		System.out.println("A完成某事");
	}
}

package com.dxy.design.pattern.builder.facade;

public class B {
	
	public static void doSomething() {
		System.out.println("B完成某事");
	}
}

package com.dxy.design.pattern.builder.facade;

public class C {
	
	public static void doSomething() {
		System.out.println("C完成某事");
	}
}


客户端需要分别调用A、B、C三类中的doSomething来完成特定功能,通常我们会这样来调用:

package com.dxy.design.pattern.builder.facade;

public class Client {
	public static void main(String[] args) {
		A.doSomething();
		B.doSomething();
		C.doSomething();
	}
}


这样做虽然能达到要求,但每次必须的和A、B、C类打交道才能完成规定实现,这很麻烦,这时我们只需要引入facade类:

package com.dxy.design.pattern.builder.facade;

public class Facade {
	
	public void aDoSomeThing() {
		A.doSomething();
	}
	
	public void bDoSomeThing() {
		B.doSomething();
	}
	
	public void cDoSomeThing() {
		C.doSomething();
	}
}


这样我们每次只用Facede类就能完成规定实现:

package com.dxy.design.pattern.builder.facade;

public class Client {
	public static void main(String[] args) {
		Facade facade = new Facade();
		facade.aDoSomeThing();
		facade.bDoSomeThing();
		facade.cDoSomeThing();
	}
}


使用facade模式避免了外部系统和子系统之间的直接联系,从而降低了系统之间的依赖和复杂度,但这样做会限制外部系统对仔细通过调用的灵活性,只能按照外传类提供的方式对子系统进行调用。

 

上述示例UML图如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值