Java設計模式菜鳥系列(九)外觀模式建模與實現

轉載請註明出處:http://blog.csdn.net/lhy_ycu/article/details/39805735


外觀模式(Facade):是爲了解決類與類之間的依賴關係的,像spring一樣,可以將類與類之間的關係配置到配置文件中,而外觀模式就是將他們的

關係放在一個Facade類中,降低了類與類之間的耦合度,該模式中沒有涉及到接口。

一、uml建模:



二、代碼實現:

/**
 * 示例:外觀模式,也稱門面模式
 * 
 * 優點:爲了解決類與類之間的依賴關係,降低了類與類之間的耦合度
 * 
 * 該模式中沒有涉及到接口
 */

class Memory {
	public void startup() {
		System.out.println("this is memory startup...");
	}

	public void shutdown() {
		System.out.println("this is memory shutdown...");
	}

}

class CPU {
	public void startup() {
		System.out.println("this is CPU startup...");
	}

	public void shutdown() {
		System.out.println("this is CPU shutdown...");
	}
}

/**
 * 作爲facade,持有Memory、CPU的實例
 * 
 * 任務讓Computer幫咱們處理,我們無需直接和Memory、CPU打交道
 * 
 * 這裏有點像去商店裏買東西:咱們買東西只需要到商店去買,而無需去生產廠家那裏買。
 * 
 * 商店就可以稱爲是一個facade外觀(門面)模式。--> 商品都在商店裏
 */
class Computer {
	private Memory memory;
	private CPU cpu;

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

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

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

/**
 * 客戶端測試類
 * 
 * @author Leo
 */
public class Test {
	public static void main(String[] args) {
		Computer computer = new Computer();
		computer.startup();
		System.out.println("\n");
		computer.shutdown();
	}
}

三、總結

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



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