Java设计模式——结构型模式之外观模式

一、前言

今天我们一起来学习外观模式。外观模式为用户提供一个统一的facade高层接口,我们的使用者面对仅仅就是facade这个接口,这样用户使用就显得简单,而facde下的子接口也容易扩展。自我感觉有点像我们生活中那些一键搞定的那种傻瓜式的操作模式。

二、外观模式

概述:隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。

使用场景:

1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。

2、定义系统的入口

外观模式为定义了一个高层的接口,而使得它的子系统更加容易使用,它是一种结构型的设计模式,外观模式减少了系统之间的依赖关系,做到了外观类和系统的解耦,但是这种设计违背了 开闭原则,如果要修改东西会显得很麻烦。

三、代码展示

我们通过一个小例子来演示外观模式,系统只向外提供了一个高层的facade接口。用户只需要关心facade接口即可。

3.1 定义一个计算接口

public interface CalculateBase {
public void calc();
}

3.2 创建两个服务实现类

public class ServiceA implements CalculateBase {

	@Override
	public void calc() {
		// TODO Auto-generated method stub
	  System.out.println("服务A 的计算");
	}

}
public class ServiceB implements CalculateBase {

	@Override
	public void calc() {
		// TODO Auto-generated method stub
	  System.out.println("服务B 的计算");
	}


}

3.3 定义一个 facede的高层接口

public class Facade {
private CalculateBase calculateBase;
public Facade(int calcType)
{
	createSerivce( calcType);
}
public void calc()
{
	if(calculateBase == null)
	{
		System.out.println("暂无服务支持");
		return;
	}
	calculateBase.calc();
}
private void createSerivce(int calcType)
{
	switch (calcType) {
	case 1:
		this.calculateBase = new ServiceA();
		break;
	case 2:
		this.calculateBase = new ServiceB();
		break;
	default:
		break;
	}
}
}

3.4 用户只需要关心高层接口即可

public class Test {
public static void main(String[] args) {
	Facade facade = new Facade(1);
	facade.calc();
	
	Facade facade1 = new Facade(2);
	facade1.calc();
	
	Facade facade2 = new Facade(3);
	facade2.calc();
}
}

结果输出

服务A 的计算
服务B 的计算
暂无服务支持

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值