设计模式之《外观模式》学习

概念

外观模式提供一个统一的接口,用来访问子系统中的一群接口。定义了一个高层的接口,让子系统更容易使用。

下面以启动电脑为例子

首先,我们创建一个硬件的基本接口:

public interface IHardware {
	public void start();
}

然后,我们创建硬件的子类实现,分别创建Cpu、硬盘、内存:

public class Memory implements IHardware {
	@Override
	public void start() {
		System.out.println("启动内存");
	}
}
public class Disk implements IHardware {
	@Override
	public void start() {
		System.out.println("启动硬盘");
	}

}
public class Cpu implements IHardware{
	@Override
	public void start() {
		System.out.println("启动CPU");
	}

}

这里就假设,在这三个子类里面都进行了非常复杂的实现,而我们启动电脑并不需要这些实现方法,那么外观模式就需要提供一个简单的执行方法来进行一键启动,就是我们的电源键,下面我们创建一个电源键:

public class StartBtn {
	public void start() {
		new Cpu().start();
		new Disk().start();
		new Memory().start();
	}
}

最后,我们启动我们的电脑:

public static void main(String[] args) {
	new StartBtn().start();
}

作用

提供一个简单的接口来调用了后方一群复杂的接口,让我们的系统和子系统进行了解耦。

三个角色

  • 子系统:已有模块或子系统,提供了一系列复杂的接口功能。
  • 外观:它了解子系统,并对外暴露一个简单的接口。
  • 客户:调用外观提供的接口来实现功能,无需了解一大堆复杂的子接口。

外观模式就是迪米特法则(最少知道原则)的应用,类之间越独立越好。


应用

1、存在多个复杂的子系统。

2、重新包装来隐藏不想暴露的接口。

优点和缺点

优点:将复杂的接口简单化,减少客户端与接口之间的耦合,提高了系统的安全性。

缺点:可能产生大量的中间类,一定程度上也增加了系统的复杂度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值