外观模式

概念

  隐藏系统的复杂性,并向客户端提供了一个可以访问系统的接口的结构型设计模式。

角色

抽象外观角色:定义向客户端提供的接口。
具体外观角色:实现抽象外观角色。
子系统角色:实现子系统的功能,也可以是外观角色。

Code

比如我们开电脑,只要打开电源键就可以,但是电脑内部却不是,他还启动了CPU、启动内存、启动硬盘等等。这就是一个外观模式。电脑就相当于具体外观角色。

抽象外观角色
public abstract class AbsFacade {
	
	public abstract void showMessage();
}

具体外观角色
public class Facade extends AbsFacade{

	private Sub1 sub1;
	private Sub2 sub2;
	private Sub3 sub3;
	
	public Facade(){
		sub1 = new Sub1();
		sub2 = new Sub2();
		sub3 = new Sub3();
	}
	
	@Override
	public void showMessage() {
		sub1.showMeessage();
		sub2.showMessage();
		sub3.showMessage();
	}

}
子系统角色
public class Sub1 {
	public void showMeessage(){
		System.out.println("start 1");
	}
}
public class Sub2 {
	public void showMessage(){
		System.out.println("start2");
	}
}

public class Sub3 {
	public void showMessage(){
		System.out.println("sub3");
	}
}
客户端测试类
public class FacadeClient {
	public static void main(String[] args) {
		AbsFacade faced = new Facade();

		faced.showMessage();
	}
}

结果

The End

这里我们实现抽象外观者,是为了方便替换子系统的,比如,我们要将sub2改成sub4,如果不实现抽象外观者的话,我们就需要修改具体的外观者或客户端源代码,这样就违背了开闭原则。所以新增抽象外观角色。
优点: 减少系统相互依赖、提高灵活性、提高了安全性。
缺点: 不能很好地限制客户端直接使用子系统类,如果对客户端访问子系统类做太多的限制则减少了可变性和灵活 性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值