编程-设计模式 10:外观模式

设计模式 10:外观模式

定义与目的
  • 定义:外观模式(Facade Pattern)提供了一个统一的接口,用来访问子系统中的一群接口。它定义了一个高层接口,让子系统更容易使用。
  • 目的:简化复杂的子系统的使用,并提供一个客户友好的接口,使得客户不必了解子系统的内部结构。
实现示例

假设我们有一个音乐播放器软件,它包含多个组件,比如播放、停止、上一首、下一首等功能。为了简化客户端代码,我们可以引入一个外观类来管理这些功能。

// 子系统接口
interface SubSystem {
    void execute();
}

// 具体子系统 - 播放器
class Player implements SubSystem {
    @Override
    public void execute() {
        System.out.println("Player is playing music.");
    }
}

// 具体子系统 - 音量控制
class VolumeControl implements SubSystem {
    @Override
    public void execute() {
        System.out.println("Volume is set to medium.");
    }
}

// 具体子系统 - 显示器
class Display implements SubSystem {
    @Override
    public void execute() {
        System.out.println("Display shows the current song.");
    }
}

// 外观类
class MusicPlayerFacade {
    private Player player;
    private VolumeControl volumeControl;
    private Display display;

    public MusicPlayerFacade() {
        player = new Player();
        volumeControl = new VolumeControl();
        display = new Display();
    }

    public void playMusic() {
        player.execute();
        volumeControl.execute();
        display.execute();
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        MusicPlayerFacade facade = new MusicPlayerFacade();
        facade.playMusic();  // 输出: 
                             // Player is playing music.
                             // Volume is set to medium.
                             // Display shows the current song.
    }
}
使用场景
  • 当你需要提供一个简单易用的接口来访问复杂的子系统时。
  • 当子系统有很多接口,但客户端只需要访问其中的一部分时。
  • 当你需要隐藏子系统的复杂性并提供一个简单的界面时。

外观模式通过封装子系统中的复杂度,提供了一个简洁的接口供客户端使用,从而简化了客户端代码。

小结

外观模式是一种常用的结构型模式,它有助于简化子系统的使用,使得客户端不必关心子系统的具体细节,从而降低了系统的耦合度。这对于提高系统的可维护性和可扩展性非常有益。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值