Facade:将内部的多个模块封装起来,供外部调用。

目的:让外部减少与子系统内多个模块的交互,松散耦合,让外部简单的使用子系统。

注意:因为Facade是当作子系统对外的接口的出现的,虽然也可以在这里定义一些子系统没有的功能,但不建议这么做。Facade应是包装已有的功能,负责组合已有的功能来实现用户的需要。

本质是:封装交换,简化使用。

使用的情况:
    1、位一个复杂的子系统提供一个简单接口的时候。
    2、让客户程序和抽象类的实现部分松散耦合,是Facade对象将这个子系统与客户分离开来,提高子系统的独立性和移植性。
    3、构建多层结构的系统。

很好的体现了“最少知识原则”。

 

1 public class Dao {
2     public void generate(){
3             System.out.println("正在生成数据层代码文件!");
4     }
5 }
1 public class Presentation {
2     public void generate(){
3             System.out.println("正在生成表现层代码文件!");
4     }
5 }
1 public class Business {
2     public void generate(){
3             System.out.println("正在生成逻辑层代码文件!");
4     }
5 }
1 public class facade {
2     public void generate(){
3         new Presentation().generate();
4         new Business().generate();
5         new Dao().generate();
6     }
7 }
1 public class client {
2     public static void main (String[] args){
3         new facade().generate();
4     }
5 }