設計模式——門面模式
阿新 • • 發佈:2018-03-31
mem 設計 log 單獨 disk 集合 mark 允許 技術
定義
一個子系統的外部與內部的通信必須通過一個統一的對象進行。門面模式提高一個高層次的接口,使得子系統更易實現。
門面對象就是一個提供外部訪問子系統的一個接口,除了這個接口不允許有任何訪問子系統的行為發生。
Facede門面角色
-客戶端調用門面方法,通過該角色將客戶端的請求委派到相應的子系統中,改系統沒有實際的業務邏輯。
subsystem子系統角色
可以同時擁有一個或者多個子系統。每個子系統都不是一個單獨的類,而是一個類的集合。子系統不知道門面的存在,對於子系統而言,門面僅僅是一個客戶端而已。
UML圖
/** * cpu子系統類 * @author Administrator * */ public class CPU { public static final Logger LOGGER = Logger.getLogger(CPU.class); public void start() { LOGGER.info("cpu is start..."); } public void shutDown() { LOGGER.info("CPU is shutDown..."); } }
public class CPU
{
public static final Logger LOGGER = Logger.getLogger(CPU.class);
public void start()
{
LOGGER.info("cpu is start...");
}
public void shutDown()
{
LOGGER.info("CPU is shutDown...");
}
}
public class Disk { public static final Logger LOGGER = Logger.getLogger(Disk.class); public void start() { LOGGER.info("Disk is start..."); } public void shutDown() { LOGGER.info("Disk is shutDown..."); } }
public class Memory
{
public static final Logger LOGGER = Logger.getLogger(Memory.class);
public void start()
{
LOGGER.info("Memory is start...");
}
public void shutDown()
{
LOGGER.info("Memory is shutDown...");
}
}
public class Computer { public static final Logger LOGGER = Logger.getLogger(Computer.class); private CPU cpu; private Memory memory; private Disk disk; public Computer() { cpu = new CPU(); memory = new Memory(); disk = new Disk(); } public void start() { LOGGER.info("Computer start begin"); cpu.start(); disk.start(); memory.start(); LOGGER.info("Computer start end"); } public void shutDown() { LOGGER.info("Computer shutDown begin"); cpu.shutDown(); disk.shutDown(); memory.shutDown(); LOGGER.info("Computer shutDown end..."); } }
public class Cilent {
public static final Logger LOGGER = Logger.getLogger(Cilent.class);
public static void main(String[] args)
{
Computer computer = new Computer();
computer.start();
LOGGER.info("=================");
computer.shutDown();
}
}
門面模式優點:
1.減少系統之間相互依賴。想要訪問子系統就必須經過門面對象。
2.提高靈活性,子類系統可以根據需求變更改變。
3.只能同過門面模式訪問,可以通過門面對象設置權限。門面模式缺點
1.不符合開閉原則,對修改關閉,對擴展開放。一旦出現問題就必須修改門面角色代碼。
設計模式——門面模式