設計模式之外觀模式(Facade)

外觀模式(Facade)

外觀模式是爲了解決類與類之家的依賴關係的,像spring一樣,可以將類和類之間的關係配置到配置文件中,而外觀模式就是將他們的關係放在一個Facade類中,降低了類類之間的耦合度,該模式中沒有涉及到接口。

看下類圖:(我們以一個計算機的啓動過程爲例)

外觀模式關係圖

我們先看下實現類:

    public class CPU {  

        public void startup(){  
            System.out.println("cpu startup!");  
        }  

        public void shutdown(){  
            System.out.println("cpu shutdown!");  
        }  
    }  
    public class Memory {  

        public void startup(){  
            System.out.println("memory startup!");  
        }  

        public void shutdown(){  
            System.out.println("memory shutdown!");  
        }  
    }  
    public class Disk {  

        public void startup(){  
            System.out.println("disk startup!");  
        }  

        public void shutdown(){  
            System.out.println("disk shutdown!");  
        }  
    }  
    public class Computer {  
        private CPU cpu;  
        private Memory memory;  
        private Disk disk;  

        public Computer(){  
            cpu = new CPU();  
            memory = new Memory();  
            disk = new Disk();  
        }  

        public void startup(){  
            System.out.println("start the computer!");  
            cpu.startup();  
            memory.startup();  
            disk.startup();  
            System.out.println("start computer finished!");  
        }  

        public void shutdown(){  
            System.out.println("begin to close the computer!");  
            cpu.shutdown();  
            memory.shutdown();  
            disk.shutdown();  
            System.out.println("computer closed!");  
        }  
    }  

User類如下:

    public class User {  

        public static void main(String[] args) {  
            Computer computer = new Computer();  
            computer.startup();  
            computer.shutdown();  
        }  
    }  

輸出:

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類裏,這樣就起到了解耦的作用,這,就是外觀模式!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章