java設計模式--外觀模式(Facade)


外觀模式是為了解決類與類之家的依賴關系的,像spring一樣,可以將類和類之間的關系配置到配置文件中,而外觀模式就是將他們的關系放在一個Facade類中,降低了類類之間的耦合度,該模式中沒有涉及到接口,看下類圖:(我們以一個計算機的啟動過程為例)

我們先看下實現類:

[java]  view plain  copy
 
  1. public class CPU {  
  2.       
  3.     public void startup(){  
  4.         System.out.println("cpu startup!");  
  5.     }  
  6.       
  7.     public void shutdown(){  
  8.         System.out.println("cpu shutdown!");  
  9.     }  
  10. }  
[java]  view plain  copy
 
  1. public class Memory {  
  2.       
  3.     public void startup(){  
  4.         System.out.println("memory startup!");  
  5.     }  
  6.       
  7.     public void shutdown(){  
  8.         System.out.println("memory shutdown!");  
  9.     }  
  10. }  
[java]  view plain  copy
 
  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. }  
[java]  view plain  copy
 
  1. public class Computer {  
  2.     private CPU cpu;  
  3.     private Memory memory;  
  4.     private Disk disk;  
  5.       
  6.     public Computer(){  
  7.         cpu = new CPU();  
  8.         memory = new Memory();  
  9.         disk = new Disk();  
  10.     }  
  11.       
  12.     public void startup(){  
  13.         System.out.println("start the computer!");  
  14.         cpu.startup();  
  15.         memory.startup();  
  16.         disk.startup();  
  17.         System.out.println("start computer finished!");  
  18.     }  
  19.       
  20.     public void shutdown(){  
  21.         System.out.println("begin to close the computer!");  
  22.         cpu.shutdown();  
  23.         memory.shutdown();  
  24.         disk.shutdown();  
  25.         System.out.println("computer closed!");  
  26.     }  
  27. }  

User類如下:

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

輸出:

start the computer!
cpu startup!
memory startup!
disk startup!
start computer finished!
begin to close the computer!
cpu shutdown!
memory shutdown!
disk shutdown!
computer closed!

如果我們沒有Computer類,那么,CPU、Memory、Disk他們之間將會相互持有實例,產生關系,這樣會造成嚴重的依賴,修改一個類,可能會帶來其他類的修改,這不是我們想要看到的,有了Computer類,他們之間的關系被放在了Computer類里,這樣就起到了解耦的作用,這,就是外觀模式!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM