设计模式——外观模式

来源:互联网 发布:叮叮聊天软件 编辑:程序博客网 时间:2024/06/08 09:49

个人理解:

1. 外观模式即:将多个子系统封装至一个类中,客户端通过该类可实现对多个子系统的调用

2. 示例代码中Audio、AudioImpl为音频系统,Camera、CameraImpl为音频系统,HuaweiPhone 为封装音频、视频系统的外观类,客户端只需要实例化HuaweiPhone即可调用音频、视频系统

3. 示例代码:

音频系统:

public interface Audio {    void recordAudio();    void playAudio();}

public class AudioImpl implements Audio {    @Override    public void recordAudio() {        Log.i("CameraImpl", "----------开始录制音频---------");    }    @Override    public void playAudio() {        Log.i("CameraImpl", "----------开始播放音频---------");    }}

视频系统

public interface Camera {    void takePhoto();    void takeVideo();}

public class CameraImpl implements Camera{    Audio audio;    public CameraImpl(Audio audio) {        this.audio = audio;    }    @Override    public void takePhoto() {        Log.i("CameraImpl", "----------摄像头开始照相---------");    }    @Override    public void takeVideo() {        audio.recordAudio();        Log.i("CameraImpl", "----------摄像头开始录制视频画面---------");    }}

外观类

public class HuaweiPhone {    Audio audio = new AudioImpl();    Camera camera = new CameraImpl(audio);    public void playMusic(){        audio.playAudio();    }    public void recordVideo(){        camera.takeVideo();    }}

客户端调用

private void factoryFacade(){    HuaweiPhone phone = new HuaweiPhone();    Log.i("factoryFacade", "****************开始播放音乐****************");    phone.playMusic();    Log.i("factoryFacade", "****************开始录制视频****************");    phone.recordVideo();}

运行结果

11-30 18:00:10.773 23671-23671/com.wdp.designtest I/factoryFacade: ****************开始播放音乐****************
11-30 18:00:10.774 23671-23671/com.wdp.designtest I/CameraImpl: ----------开始播放音频---------
11-30 18:00:10.774 23671-23671/com.wdp.designtest I/factoryFacade: ****************开始录制视频****************
11-30 18:00:10.774 23671-23671/com.wdp.designtest I/CameraImpl: ----------开始录制音频---------
11-30 18:00:10.774 23671-23671/com.wdp.designtest I/CameraImpl: ----------摄像头开始录制视频画面---------


4. 外观模式在Android中运用举例: Context 中封装了 Activity、Broadcast、Application等,可通过Context直接操作各个系统模块

原创粉丝点击