Java门面模式(或外观模式)

来源:互联网 发布:淘宝曲度腰椎治疗仪 编辑:程序博客网 时间:2024/04/30 07:54

门面模式(或外观模式)隐藏系统的复杂性,并为客户端提供一个客户端可以访问系统的接口。 这种类型的设计模式属于结构模式,因为此模式为现有系统添加了一个接口以隐藏其复杂性。
门面模式涉及一个类,它提供客户端所需的简化方法和委托调用现有系统类的方法。

实现实例

在这个实例中将创建一个Shape接口并实现Shape接口的具体类。在下一步中,将定义一个FacadeShapeMaker,请在下一步中参考其代码。

ShapeMaker类使用具体类来将用户调用委派给这些类。 FacadePatternDemo这是一个演示类,它使用ShapeMaker类来显示结果。

门面模式(或外观模式)的实现实例结构如下图中所示 -

第1步

创建一个接口,如下 -

Shape.java

public interface Shape {   void draw();}
Java

第2步

创建实现几个相同接口的具体类。
Rectangle.java

public class Rectangle implements Shape {   @Override   public void draw() {      System.out.println("Rectangle::draw()");   }}
Java

Square.java

public class Square implements Shape {   @Override   public void draw() {      System.out.println("Square::draw()");   }}
Java

Circle.java

public class Circle implements Shape {   @Override   public void draw() {      System.out.println("Circle::draw()");   }}
Java

第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();   }}
Java

第4步

使用装饰类来绘制各种类型的形状。

FacadePatternDemo.java

public class FacadePatternDemo {   public static void main(String[] args) {      ShapeMaker shapeMaker = new ShapeMaker();      shapeMaker.drawCircle();      shapeMaker.drawRectangle();      shapeMaker.drawSquare();           }}
Java

第5步

验证输出,执行上面的代码得到以下结果 -

Circle::draw()Rectangle::draw()Square::draw()