通过添加或移除子系统类来轻松扩展或修改外观模式
外观模式的灵活性体现在它可以轻松地扩展或修改。
添加子系统类
要添加子系统类, wystarczy 在外观类中添加一个新方法,该方法委托给新子系统类。
class Facade {private SubSystemA subSystemA;private SubSystemB subSystemB;// 添加新的子系统类private SubSystemC subSystemC;public Facade() {subSystemA = new SubSystemA();subSystemB = new SubSystemB();subSystemC = new SubSystemC();}public void operationA() {subSystemA.operationA();}public void operationB() {subSystemB.operationB();}// 添加新的操作public void operationC() {subSystemC.operationC();}
}
移除子系统类
要移除子系统类, wystarczy 从外观类中删除相应的方法。
class Facade {private SubSystemA subSystemA;private SubSystemB subSystemB;public Facade() {subSystemA = new SubSystemA();subSystemB = new SubSystemB();}public void operationA() {subSystemA.operationA();}public void operationB() {subSystemB.operationB();}// 移除操作// public void operationC() {// subSystemC.operationC();// }
}
优点
- 易于扩展:添加或移除子系统类非常简单,只需修改外观类即可。
- 灵活性高:外观模式允许通过组合不同的子系统类来创建不同的外观。
- 解耦:外观模式将客户端与子系统类解耦,客户端不必了解具体子系统类的实现细节。
- 可扩展性:外观模式支持通过添加新子系统类来扩展功能,而无需修改现有代码。
示例
以下是一个示例,展示了如何使用外观模式来控制一组子系统类:
class Facade {private SubSystemA subSystemA;private SubSystemB subSystemB;private SubSystemC subSystemC;public Facade() {subSystemA = new SubSystemA();subSystemB = new SubSystemB();subSystemC = new SubSystemC();}public void operationA() {subSystemA.operationA();subSystemB.operationB();subSystemC.operationC();}
}class SubSystemA {public void operationA() {System.out.println("SubSystemA: OperationA");}
}class SubSystemB {public void operationB() {System.out.println("SubSystemB: Operation B");}
}class SubSystemC {public void operationC() {System.out.println("SubSystemC: Operation C");}
}// 使用外观类
public class Client {public static void main(String[] args) {Facade facade = new Facade();facade.operationA();}
}
输出:
SubSystemA: Operation A SubSystemB: Operation B SubSystemC: Operation C
结论
外观模式通过提供一个统一的接口来访问一个子系统类的集合,提高了灵活性。它允许轻松扩展或修改外观模式,只需添加或移除子系统类即可。这使得外观模式成为需要灵活性且易于维护的复杂系统的理想选择。