什麼是外觀模式?
例如:打開電腦時,在電腦的內部需要執行一下幾步,即啓動電源、主板、硬盤,最後啓動操作系統:關閉電腦時需要執行
的步驟與之正好相反。
關鍵:1.意圖 2.動機 3.適用性
package org.java.test;
/**
* @author Lee
* 功能:定義電源類 Power,並實現啓動電源和關閉電源的方法
* @date:2018.11.27 22.23
*
* */
public class Power {
public void Connect(){
System.out.println("Power Connect");
}
public void Disconnect(){
System.out.println("Power Disconnect");
}
}
package org.java.test;
/**
* @author Lee
* 功能: MainBoard 主板類 ,定義主板開關的方法
* @date:2018.11.27 22.35
*
* */
public class MainBoard {
public void On(){
System.out.println("MainBoard On");
}
public void Off(){
System.out.println("MainBoard Off");
}
}
package org.java.test;
/**
* @author Lee
* 功能:HardDisk 硬盤
* @date:2018.11.27 22.38
*
* */
public class HardDisk {
public void Run(){
System.out.println("HardDisk Run");
}
public void Stop(){
System.out.println("HardDisk Stop");
}
}
package org.java.test;
/**
* @author Lee
* 功能: OperateionSystem 操作系統
* @date:2018.11.27 22:47
*
* */
public class OperateionSystem {
public void Startup(){
System.out.println("OperateionSystem Startup");
}
public void Shutdown(){
System.out.println("OperateionSystem Shutdown");
}
}
package org.java.test;
/**
* @author Lee
* @param:power 電源
* mainBoard 主板
* hardDisk 硬盤
* operateionSystem 操作系統
* @date:2018.11.27 22:51
*
*
* */
public class Computer {
Power power;
MainBoard mainBoard;
HardDisk hardDisk;
OperateionSystem operateionSystem;
public Computer(Power power, MainBoard mainBoard, HardDisk hardDisk, OperateionSystem operateionSystem) {
super();
this.power = power;
this.mainBoard = mainBoard;
this.hardDisk = hardDisk;
this.operateionSystem = operateionSystem;
}
//啓動計算機
public void StartUp(){
this.power.Connect();
this.hardDisk.Run();
this.operateionSystem.Startup();
}
//關閉計算機
public void Shutdown(){
this.hardDisk.Stop();
this.mainBoard.Off();
this.power.Disconnect();
}
}
package org.java.test;
/**
* @author Lee
* 功能:測試
* @date:2018.11.27 23.08
*
* */
public class Program {
public static void main(String[] args) {
Power power=new Power(); //創建電源對象
MainBoard mainBoard=new MainBoard(); //創建主板對象
HardDisk hardDisk=new HardDisk(); //創建硬盤對象
OperateionSystem operateionSystem=new OperateionSystem(); //創建操作系統對象
Computer computer=new Computer(power, mainBoard, hardDisk, operateionSystem);//創建計算機對象
System.out.println("打開電腦");
computer.StartUp();
System.out.println("關閉電腦");
computer.Shutdown();
}
}