• 外观模式-Facade


    外观模式是为了解决类与类之间依赖关系的,外观模式将类间关系放在一个Facade类中,降低了类类之间的耦合度,该模式中不涉及接口

    举一个经典的例子:

    CPU类:

    1 public class CPU {  
    2     public void startup(){  
    3         System.out.println("cpu startup");  
    4     }  
    5       
    6     public void shutdown(){  
    7         System.out.println("cpu shutdown");  
    8     }  
    9 }  

    Mainboard类:

     1 public class Mainboard {  
     2       
     3     public void startup(){  
     4         System.out.println("mainboard startup");  
     5     }  
     6       
     7     public void shutdown(){  
     8         System.out.println("mainboard shutdown");  
     9     }  
    10 } 

    Disk类:

     1 public class Disk {  
     2       
     3     public void startup(){  
     4         System.out.println("disk startup");  
     5     }  
     6       
     7     public void shutdown(){  
     8         System.out.println("disk shutdown");  
     9     }  
    10 } 

    Computer类(外观类):

     1 public class Computer {  
     2     private CPU cpu;  
     3     private Mainboard mainboard;  
     4     private Disk disk;  
     5       
     6     public Computer(){  
     7         cpu = new CPU();  
     8         mainboard = new Mainboard();  
     9         disk = new Disk();  
    10     }  
    11       
    12     public void startup(){  
    13         System.out.println("starting the computer");  
    14         cpu.startup();  
    15         mainboard.startup();  
    16         disk.startup();  
    17         System.out.println("computer is started");  
    18     }  
    19       
    20     public void shutdown(){  
    21         System.out.println("closing the computer");  
    22         disk.shutdown();  
    23         mainboard.shutdown();  
    24         cpu.shutdown();  
    25         System.out.println("computer is closed");  
    26     }  
    27 } 

    测试类:

    1 public class Main {  
    2 
    3     public static void main(String[] args) {  
    4         Computer computer = new Computer();  
    5         computer.startup();  
    6         computer.shutdown();  
    7     }  
    8 }

    测试结果:

    starting the computer
    cpu startup
    mainboard startup
    disk startup
    computer is started
    closing the computer
    disk shutdown
    mainboard shutdown
    cpu shutdown
    computer is closed

    如果我们没有外观类(Computer),CPU、Mainboard、Disk之间将会相互持有实例对象,造成严重的依赖;而有了Computer,他们之间的关系被放在了Computer类里,这样就起到了解耦的作用。这就是外观模式!

  • 相关阅读:
    170120、java 如何在pdf中生成表格
    170119、100亿数据1万属性数据架构设计
    170118、快速失败Vs安全失败(Java迭代器附示例)
    170117、spring解决乱码
    170116、centos6.4下nginx和ftp搭建图片服务器
    170113、CentOs6.4中安装和配置vsftp简明教程
    linux nginx完全卸载
    DevOps 的技术栈与工具链
    git与pycharm结合使用
    JMeter和JMeterPlugin的下载安装
  • 原文地址:https://www.cnblogs.com/joshua-aw/p/6033987.html
Copyright © 2020-2023  润新知