外觀模式(Facade),為子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。[DP]
?
首先,定義子系統的各個組件接口和具體實現類:
// 子系統組件接口
public interface SubsystemA {void operationA();
}public interface SubsystemB {void operationB();
}public interface SubsystemC {void operationC();
}// 子系統組件的具體實現
public class ConcreteSubsystemA implements SubsystemA {@Overridepublic void operationA() {System.out.println("Subsystem A operation");}
}public class ConcreteSubsystemB implements SubsystemB {@Overridepublic void operationB() {System.out.println("Subsystem B operation");}
}public class ConcreteSubsystemC implements SubsystemC {@Overridepublic void operationC() {System.out.println("Subsystem C operation");}
}
接下來,創建外觀類,它包含了對子系統中各個組件的引用,并提供了簡化后的接口:
public class Facade {private SubsystemA subsystemA;private SubsystemB subsystemB;private SubsystemC subsystemC;public Facade() {subsystemA = new ConcreteSubsystemA();subsystemB = new ConcreteSubsystemB();subsystemC = new ConcreteSubsystemC();}// 客戶端調用的簡單接口public void operation() {subsystemA.operationA();subsystemB.operationB();subsystemC.operationC();}//TODO 客戶機調用的接口可以根據不同的情況,對子系統的方法進行組合
}
最后,創建客戶端代碼來演示如何使用外觀類:
public class FacadePatternExample {public static void main(String[] args) {Facade facade = new Facade();// 客戶端通過外觀類來調用子系統操作facade.operation();}
}