设计模式8:外观模式

Posted 一个后端狗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式8:外观模式相关的知识,希望对你有一定的参考价值。

外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式向现有的系统添加一个接口,来隐藏系统的复杂性。

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

使用:

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

2、定义系统的入口。

这样做带来了外观类与系统的耦合,降低了客户端与系统的耦合。

uml图:

Facade类通过三个method方法对原有系统(SubSystem1、2、3)的方法进行包装,方便客户端调用。

代码:

SuperSystem及其子类:

public abstract class SuperSystem {
	
	public abstract void method();

}

public class SubSystem1 extends SuperSystem {

	@Override
	public void method() {
		System.out.println("sub system 1");
	}

}

public class SubSystem2 extends SuperSystem {

	@Override
	public void method() {
		System.out.println("sub system 2");
	}

}

public class SubSystem3 extends SuperSystem {

	@Override
	public void method() {
		System.out.println("sub system 3");
	}

}

Facade类:

public class Facade {
	
	private SuperSystem sub1 = null;
	private SuperSystem sub2 = null;
	private SuperSystem sub3 = null;
	
	public Facade() {
		sub1 = new SubSystem1();
		sub2 = new SubSystem2();
		sub3 = new SubSystem3();
	}
	
	public void methodA() {
		sub1.method();
		sub2.method();
	}
	
	public void methodB() {
		sub2.method();
		sub3.method();
	}
	
	public void methodC() {
		sub1.method();
		sub3.method();
	}
}

Demo类:

public class FacadeDemo {
	
	public static void main(String[] args) {
		Facade facade = new Facade();
		facade.methodA();
		facade.methodB();
		facade.methodC();
	}
	
}

  

  

 

以上是关于设计模式8:外观模式的主要内容,如果未能解决你的问题,请参考以下文章

8 外观模式

大话设计模式读书笔记--8.外观模式

8.外观模式

大话涉及模式Python实现-外观模式

设计模式(12)-----外观模式

设计模式---外观模式