Facade模式隐藏了系统的复杂性,并为客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构模式,因为这种模式为现有系统添加了一个界面来隐藏其复杂性.
这种模式涉及一个类,它提供客户端和委托调用所需的简化方法现有系统类的方法.
实现
我们将创建一个 Shape 接口和实现 Shape 界面.外观类 ShapeMaker 被定义为下一步.
ShapeMaker 类使用具体类将用户调用委托给这些类. FacadePatternDemo ,我们的演示类,将使用 ShapeMaker 类来显示结果.
Step 1
创建一个界面.
Shape.java
public interface Shape { void draw(); }
步骤2
创建实现相同界面的具体类.
Rectangle.java
public class Rectangle implements Shape { @Override public void draw() { System.out.println("Rectangle::draw()"); } }
Square.java
public class Square implements Shape { @Override public void draw() { System.out.println("Square::draw()"); }}
Circle.java
public class Circle implements Shape { @Override public void draw() { System.out.println("Circle::draw()"); }}
第3步
创建一个外观类.
ShapeMaker.java
public class ShapeMaker { private Shape circle; private Shape rectangle; private Shape square; public ShapeMaker() { circle = new Circle(); rectangle = new Rectangle(); square = new Square(); } public void drawCircle(){ circle.draw(); } public void drawRectangle(){ rectangle.draw(); } public void drawSquare(){ square.draw(); } }
第4步
使用立面绘制各种形状.
FacadePatternDemo.java
public class FacadePatternDemo { public static void main(String[] args) { ShapeMaker shapeMaker = new ShapeMaker(); shapeMaker.drawCircle(); shapeMaker.drawRectangle(); shapeMaker.drawSquare(); } }
步骤5
验证输出.
Circle::draw()Rectangle::draw()Square::draw()