外观模式:为子系统中的一组接口提供一个统一的入口,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
外观模式中,一个子系统的外部与其内部的通信通过一个统一的外观类进行,外观类将客户类与子系统的内部复杂性分隔开,使得客户类只需要与外观角色打交道,而不需要与子系统内部的很多对象打交道。
例子:业务类A
/**
* anji-allways.com Inc.
* Copyright (c) 2016-2017 All Rights Reserved.
*/
package boot.demo.facade;
/**
* <pre>
* OperationA
* </pre>
*
* @author sxl
* @version $Id: OperationA.java, v 0.1 2019年8月12日 上午10:37:18 sxl Exp $
*/
public class OperationA {
public void operA () {
System.out.println("这是A操作!!!");
}
}
业务类B
/**
* anji-allways.com Inc.
* Copyright (c) 2016-2017 All Rights Reserved.
*/
package boot.demo.facade;
/**
* <pre>
* OperationB
* </pre>
*
* @author sxl
* @version $Id: OperationB.java, v 0.1 2019年8月12日 上午10:37:36 sxl Exp $
*/
public class OperationB {
public void operB () {
System.out.println("这是B操作!!!");
}
}
业务类C
/**
* anji-allways.com Inc.
* Copyright (c) 2016-2017 All Rights Reserved.
*/
package boot.demo.facade;
/**
* <pre>
* OperationC
* </pre>
*
* @author sxl
* @version $Id: OperationC.java, v 0.1 2019年8月12日 上午10:37:51 sxl Exp $
*/
public class OperationC {
public void operC () {
System.out.println("这是C操作!!!");
}
}
对外提供的外观类
/**
* anji-allways.com Inc.
* Copyright (c) 2016-2017 All Rights Reserved.
*/
package boot.demo.facade;
/**
* <pre>
* OperationFacade
* </pre>
*
* @author sxl
* @version $Id: DemoFacade.java, v 0.1 2018年8月31日 下午1:50:07 sxl Exp $
*/
public class OperationFacade {
public void facade () {
OperationA a = new OperationA();
OperationB b = new OperationB();
OperationC c = new OperationC();
a.operA();
b.operB();
c.operC();
System.out.println("一整套操作完成啦!!!");
}
}
调用业务的客户端类 ,只需要调用外观类,不需要关心具体的业务类
/**
* anji-allways.com Inc.
* Copyright (c) 2016-2017 All Rights Reserved.
*/
package boot.demo.facade;
/**
* <pre>
*
* </pre>
*
* @author sxl
* @version $Id: Demo.java, v 0.1 2019年8月12日 上午10:44:20 sxl Exp $
*/
public class Demo {
public static void main(String[] args) {
OperationFacade o = new OperationFacade();
o.facade();
}
}
结果如下
这是A操作!!!
这是B操作!!!
这是C操作!!!
一整套操作完成啦!!!