了解外观模式
java 设计模式 ------外观模式
Java中一共有23种设计模式,每种设计模式各有特点,我们主要来说一下外观模式。
当然,学习外观模式,首先应该了解一下,什么是外观模式?
外观模式:
Facade模式,也叫做外观模式,是由GoF提出的23种设计模式中的一种,Facade模式为一
组具有类似功能的类群,比如说类库,子系统等,提供一个一致的简单的界面,这个一致的简
单界面就叫做Facade模式。这是从定义上说。.
根据自己的语言,通俗点讲,也就是:
有一组类,他们都具有类似的功能,我们会为这些类统一的提供一个简单的界面,来服务
客户端,这就叫做外观模式。也可以说是:为子系统中的一组接口提供一个一致的界面,此
模式定义了一个高层接口。这个接口使得这一子系统更加容易使用。
外观模式的核心:为子系统提供统一的入口,封装子系统的复杂性,便于客户端调用。
接下来我们用代码来练一下:
//1子系统
public class System1 {
/** 1子系统实现功能*/
public void doSomething() {
System.out.println("实现1子系统功能");
}
}
//2子系统
public class System2 {
/** 2子系统实现功能*/
public void doSomething() {
System.out.println("实现2子系统功能");
}
}
// 3子系统
public class SystemC {
/** 3子系统实现功能*/
public void doSomething() {
System.out.println("实现3子系统功能");
}
}
其次我们新建一个给客户端体提供服务的简单界面类
Facade.java
public class Facade {
private System1 system1;
private System2 system2;
private System3 system3;
public Facade() {
system1 = new System1();
system2 = new System2();
system3 = new System3();
}
public void do123() {
this.system1.doSomething();
this.system2.doSomething();
this.system3.doSomething();}
}
最后我们建立客户端类
MainClass.java
public class MainClass {
public static void main(String[] args) {
Facade facade = new Facade();
facade.do123();
}
}
从上面的代码我们可以知道,System1.java、System2.java、System3.java 具有相似的d
o123的功能的类。
而Facade可以统一的提供了一个服务客户端的do123的方法,可以看成是一个简单的界面。
接下来用图片来说明一下:
可以利用的界面的效果说明这个问题:在一个界面中我们需要对界面的各个部分进行初
始化的操作,实现相似的功能,标题栏进行初始化返回键,初始化标题,初始化标题栏的背
景颜色等等。
此种设计还是有一定的局限性,针对一些固有的操作很方便,比如经常做一些固定的
操作,可以使客户端和子系统进行隔离,但是如果我们要经常增加或者删除一些子系统
,这样我们还得对外观类进行更改,这还是违反了开闭原则。