Java 外观模式

外观模式隐藏了系统的复杂性。

它为客户端提供了一个简单的接口,客户端使用接口与系统交互。

外观模式是结构型模式。

例子

class ShapeFacade {
  interface Shape {
    void draw();
  }
  class Rectangle implements Shape {
    @Override
    public void draw() {
      System.out.println("Rectangle::draw()");
    }
  }
  class Square implements Shape {
    @Override
    public void draw() {
      System.out.println("Square::draw()");
    }
  }
  class Circle implements Shape {
    @Override
    public void draw() {
      System.out.println("Circle::draw()");
    }
  }
  private Shape circle = new Circle();
  private Shape rectangle = new Rectangle();
  private Shape square = new Square();

  public ShapeFacade() {
  }
  public void drawCircle() {
    circle.draw();
  }
  public void drawRectangle() {
    rectangle.draw();
  }
  public void drawSquare() {
    square.draw();
  }
}
public class Main {
  public static void main(String[] args) {
    ShapeFacade shapeFacade = new ShapeFacade();
    shapeFacade.drawCircle();
    shapeFacade.drawRectangle();
    shapeFacade.drawSquare();
  }
}

上面的代码生成以下结果。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
外观模式是一种结构型设计模式,它提供了一种简化复杂系统的方法,通过提供一个统一的接口来隐藏底层系统的复杂性。在Java中,外观模式通常用于为客户端提供一个简单的接口,隐藏底层系统的复杂性,使客户端更容易使用系统。 以下是一个Java外观模式的例子,假设我们有一个复杂的音响系统,其中包含多个组件,如CD播放器、音箱和放大器。每个组件都有自己的接口和实现。我们可以使用外观模式来隐藏这些复杂性,提供一个简单的接口来控制整个音响系统。 首先,我们定义一个外观类,该类将封装音响系统的所有组件,并提供一个简单的接口: ``` public class SoundSystemFacade { private CDPlayer cdPlayer; private Speakers speakers; private Amplifier amplifier; public SoundSystemFacade() { cdPlayer = new CDPlayer(); speakers = new Speakers(); amplifier = new Amplifier(); } public void playMusic() { cdPlayer.loadCD(); amplifier.setVolume(10); speakers.turnOn(); } public void stopMusic() { amplifier.setVolume(0); speakers.turnOff(); cdPlayer.ejectCD(); } // other methods to control the sound system } ``` 然后,我们定义每个组件的接口和实现: ``` public class CDPlayer { public void loadCD() { System.out.println("Loading CD..."); } public void ejectCD() { System.out.println("Ejecting CD..."); } } public class Speakers { public void turnOn() { System.out.println("Turning on speakers..."); } public void turnOff() { System.out.println("Turning off speakers..."); } } public class Amplifier { public void setVolume(int volume) { System.out.println("Setting volume to " + volume + "..."); } // other methods to control the amplifier } ``` 最后,我们可以使用外观类来控制整个音响系统,而不必了解每个组件的底层实现: ``` public class Client { public static void main(String[] args) { SoundSystemFacade soundSystem = new SoundSystemFacade(); soundSystem.playMusic(); // do something else soundSystem.stopMusic(); } } ``` 通过使用外观模式,我们可以将复杂的音响系统封装在一个简单的接口中,使客户端更容易使用系统。客户端不必了解每个组件的底层实现,只需调用外观类提供的方法即可控制整个系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧浩海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值