什么是外观模式:
外观模式其实就是封装,为子系统封装对外的一个接口,屏蔽内部复杂的操作,例如,我们要注册一家公司,我们可以找代理注册公司的机构,让它为我们处理注册所有的细节,而我们只需要面对注册公司处理流程就行。
开发中外观模式场景:
常见的util包,例如spring的beanutils,FileUtils以及其他的工具类,其实使用的都是外观模式。
外观模式实现例子:
实现的场景是一款软件产品开发过程,产品的开发需要各个部门的合作,而对外的话,只需提供一个销售的接口。
/**
* 部门接口
* @author liuxg
* @date 2016年5月27日 下午12:17:22
*/
public interface IDepartment {
void remit(); //部门职能
}
class Research implements IDepartment{
@Override
public void remit() {
System.out.println("研发产品");
}
}
class Business implements IDepartment{
@Override
public void remit() {
System.out.println("定需求");
}
}
class Sale implements IDepartment{
@Override
public void remit() {
System.out.println("卖产品");
}
}
提供一个外观类,并且给客户端提供一个接口,封装具体的实现细节
/**
* 一个代理类,将所有的流程绑定成一个方法
* @author liuxg
* @date 2016年5月27日 下午5:26:46
*/
public class RegisterFacade {
public void buyProduct(){
Business bs = new Business();
bs.remit();
Research re = new Research();
re.remit();
Sale sale = new Sale();
sale.remit();
}
}
客户端只需访问一个接口即可
public class Client {
public static void main(String[] args) {
RegisterFacade registerFacade = new RegisterFacade();
registerFacade.buyProduct();
}
}