Facade:外观模式
先代码
package h.l.demo.facade;
/**
*
* @author: Is-Me-Hl
* @date: 2020年2月23日
* @Description: 外观类:需要了解所有子系统的方法或属性,进行组合以备外界调用
*/
public class FacadeClass {
// 子系统一
SubSystemOne subSystemOne;
// 子系统二
SubSystemTwo subSystemTwo;
// 子系统三
SubSystemThree subSystemThree;
// 子系统四
SubSystemFour subSystemFour;
public FacadeClass(){
subSystemOne = new SubSystemOne();
subSystemTwo = new SubSystemTwo();
subSystemThree = new SubSystemThree();
subSystemFour = new SubSystemFour();
}
// 外界调用接口一
public void methodA(){
System.out.println("方法组A():");
subSystemOne.methodOne();
subSystemTwo.methodTwo();
}
// 外界调用接口二
public void methodB(){
System.out.println("方法组B():");
subSystemThree.methodThree();
subSystemFour.methodFour();
}
public static void main(String[] args) {
new FacadeClass().methodA();
System.out.println("----------------------");
new FacadeClass().methodB();
}
}
/**
*
* @author: Is-Me-Hl
* @date: 2020年2月23日
* @Description: 子系统一
*/
class SubSystemOne{
public void methodOne(){
System.out.println("子系统方法一");
}
}
/**
*
* @author: Is-Me-Hl
* @date: 2020年2月23日
* @Description: 子系统二
*/
class SubSystemTwo{
public void methodTwo(){
System.out.println("子系统方法二");
}
}
/**
*
* @author: Is-Me-Hl
* @date: 2020年2月23日
* @Description: 子系统三
*/
class SubSystemThree{
public void methodThree(){
System.out.println("子系统方法三");
}
}
/**
*
* @author: Is-Me-Hl
* @date: 2020年2月23日
* @Description: 子系统四
*/
class SubSystemFour{
public void methodFour(){
System.out.println("子系统方法四");
}
}
测试结果:
后分析
- 个人建议:写代码是件幸福的事,So,do it
外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。通俗理解,就是对于一个客户,他做买卖希望的是能派一个代表出来和他谈就好了,不用诶个交流。那这个外观模式(门面模式)就是这个代表,就相当于客户可以通过这个代表而和这些人交流。映射到代码片段,就是用过这个外观类,我们可以更好的使用其他类组合提供的方法。反过来看,如上述代码中注释为外界调用接口一、外界调用接口二的代码,实际上对应的方法集成了其他子系统的功能,那么就想,比如其他客户端经常使用这几个子系统的功能,那每个客户端都要写一遍这样的方法,索性就将这样的一个代码块提到高层接口中,重构一下。
其他例子:参考自《大话设计模式》炒民炒股和基金投资。这个例子其实更好理解。真实生活中,很多股民都会自个去买各种股票。但这时候基金出来了,基金说我可以帮你们管理这些钱,我买很多类股票,我帮你操作,以至于你的钱不会放一个篮子里被打空。这其实就反应了这种模式。基金相当于各种股票的门面,老百姓购买基金即可知道涨幅。无须每天都盯着每一支股票的走势了。
注:以上文章仅是个人总结,若有不当之处,望不吝赐教