📄 client.java
字号:
/*
* Created on 2005-5-11
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.test.pattern.struct.facade;
/**
* @author Administrator
*
* 意图 为子系统中的一组接口提供一个一致的界面, Facade 模式定义了一个高层接口,这个接口使得 这一子系统更加容易使用。 适用性
* 当你要为一个复杂子系统提供一个简单接口时。 子系统往往因为不断演化而变得越来越复杂。 大多数模式使用时都会产生更多更小的类。
* 这使得子系统更具可重用性,也更容易对子系统进行定制, 但这也给那些不需要定制子系统的用户带来一些使用上的困难。 Facade
* 可以提供一个简单的缺省视图,这一视图对 大多数用户来说已经足够,而那些需要更多的可定制性 的用户可以越过facade 层。
* 客户程序与抽象类的实现部分之间存在着很大的依赖性。 引入facade 将这个子系统与客户以及其他的子系统分离, 可以提高子系统的独立性和可移植性。
* 当你需要构建一个层次结构的子系统时,使用facade 模式定义子系统中每层的入口点。如果子系统之间是 相互依赖的,你可以让它们仅通过facade
* 进行通讯, 从而简化了它们之间的依赖关系。
*
*/
class SubSystem_class1 {
public void OperationX() {
System.out.println("SubSystem_class1.OperationX called");
}
}
class SubSystem_class2 {
public void OperationY() {
System.out.println("SubSystem_class2.OperationY called");
}
}
class SubSystem_class3 {
public void OperationZ() {
System.out.println("SubSystem_class3.OperationZ called");
}
}
class Facade {
private SubSystem_class1 c1 = new SubSystem_class1();
private SubSystem_class2 c2 = new SubSystem_class2();
private SubSystem_class3 c3 = new SubSystem_class3();
public void OperationWrapper() {
System.out
.println("The Facade OperationWrapper carries out complex decision-making");
System.out
.println("which in turn results in calls to the subsystem classes");
c1.OperationX();
if (1 == 1 /* some really complex decision */) {
c2.OperationY();
}
// lots of complex code here . . .
c3.OperationZ();
}
}
/// <summary>
/// Summary description for Client.
/// </summary>
public class Client {
public static void main(String[] args) {
Facade facade = new Facade();
System.out.println("Client calls the Facade OperationWrapper");
facade.OperationWrapper();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -