外观模式
一、什么是外观模式
Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界
面被称作facade。
二、外观模式的结构
三、外观模式的角色和职责
Facade
为调用方定义简单的调用接口。
Clients
调用者。通过Facade接口调用提供某功能的内部类群。
功能提供者。指提供功能的类群(模块或子系统)。
四、代码
在java开发过程中经常会碰到同时对不同的数据库进行操作,这样就会有不同的连接数据库的操作,这时使用外观模式再好不过了
package org.fbm.facade;
//链接的接口
public interface Connection {
//链接数据库的方法
public void connection();
}
package org.fbm.facade;
public class ConnectionMysql implements Connection{
public void connection() {
System.out.println("MYSQL数据库连接");
}
}
package org.fbm.facade;
public class ConnectionOracle implements Connection {
public void connection() {
System.out.println("ORACLE数据库连接");
}
}
package org.fbm.facade;
public class ConnectionSqlServer implements Connection {
public void connection() {
System.out.println("SQLSERVER数据库连接");
}
}
package org.fbm.facade;
//外观类
public class Facade {
private Connection mysql;
private Connection oracel;
private Connection sqlserver;
public Facade() {
this.mysql = new ConnectionMysql();
this.oracel = new ConnectionOracle();
this.sqlserver = new ConnectionSqlServer();
}
//只需要使用mysql和sqlserver
public void invokeMethodA(){
this.mysql.connection();
this.sqlserver.connection();
}
//只需要使用oracle和sqlserver
public void invokeMethodB(){
this.oracel.connection();
this.sqlserver.connection();
}
//三种数据库都使用
public void invokeMethodC(){
this.mysql.connection();
this.oracel.connection();
this.sqlserver.connection();
}
}
package org.fbm.facade;
public class MainClass {
public static void main(String[] args) {
Facade facade=new Facade();
//同时使用三种数据库
System.out.println("同时使用三种数据库");
facade.invokeMethodC();
System.out.println();
System.out.println("只需要使用mysql和sqlserve");
//只需要使用mysql和sqlserver
facade.invokeMethodA();
}
}