外观模式
迪米特法则(最少知识原则)
一个软件的实体应当尽可能少的与其他实体发生互相作用
外观模式核心
为子系统提供统一的入口。封装子系统的复杂性,便于客户端调用。
模拟注册公司
package studyGFO;
//工商局
public interface ICB {
void checkName();//检查注册名
}
class huoxingICB implements ICB{
@Override
public void checkName() {
System.out.println("检查是否有冲突");
}
}
package studyGFO;
//质监局
public interface QSB {
void orgCodeCertificate();//办理组织机构代码证
}
class huoxingQSB implements QSB{
@Override
public void orgCodeCertificate() {
System.out.println("在质监局办理组织机构代码证");
}
}
package studyGFO;
//税务局
public interface TB {
void textCertificate();//办理税务登记证
}
class huoxingTB implements TB{
@Override
public void textCertificate() {
System.out.println("办理税务登记证");
}
}
package studyGFO;
//银行
public interface Bank {
void openAccount();//开户
}
class ICBC implements Bank{
@Override
public void openAccount() {
System.out.println("在工商银行开户");
}
}
package studyGFO;
public class Client {
public static void main(String[] args) {
//不使用外观模式
ICB icb = new huoxingICB();
icb.checkName();
QSB qsb = new huoxingQSB();
qsb.orgCodeCertificate();
TB tb = new huoxingTB();
tb.textCertificate();
Bank bank = new ICBC();
bank.openAccount();
}
}
加入外观门面
package studyGFO;
/**
* 办理注册公司流程的门面
* @author http://blog.csdn.net/thewaiting
*
*/
public class Register {
public void register() {
ICB icb = new huoxingICB();
icb.checkName();
QSB qsb = new huoxingQSB();
qsb.orgCodeCertificate();
TB tb = new huoxingTB();
tb.textCertificate();
Bank bank = new ICBC();
bank.openAccount();
}
}
package studyGFO;
public class Client {
public static void main(String[] args) {
//使用外观
new Register().register();
}
}
常见的场景
使用频率高。如jdbc封装后的,commons提供的DBUtils类,Hibernate提供的工具类,Spring JDBC工具类等