安卓系列之设计模式:外观(门面)模式

450 阅读1分钟

定义

将一组接口统一成一个接口,属于结构型模式。

应用场景

1.客户端为完成某个功能需要请求多个接口 2.需要合并复杂的子系统

优点

1.接口安全
2.客户端请求接口简单化

缺点

修改起来复杂

常见实例

  1. Context可以打开Activity,可打开Service,广播等

具体代码实现

例子说明:提供一个方法供外部访问,该方法可以执行很多方法。

接口

package com.elaine.testpattern.facade;

/**
 * 接口
 * author: elaine
 * date: 2021/4/27
 */
public interface Player {
    /**
     * 运动
     */
    void play();
}

实体

下棋爱好者

package com.elaine.testpattern.facade;

import android.util.Log;

/**
 * 棋类爱好者
 * author: elaine
 * date: 2021/4/27
 */
public class ChessPlayer implements Player {
    @Override
    public void play() {
        Log.e("player""ChessPlayer====play chess");
    }
}

打球爱好者

package com.elaine.testpattern.facade;

import android.util.Log;

/**
 * 球类运动员
 *
 * author: elaine
 * date: 2021/4/27
 */
public class BallPlayer implements Player{
    @Override
    public void play() {
        Log.e("player""BallPlayer====play ball");
    }
}

小提琴演奏家

package com.elaine.testpattern.facade;

import android.util.Log;

/**
 * 小提琴演奏家
 * author: elaine
 * date: 2021/4/27
 */
public class ViolinPlayer implements Player {
    @Override
    public void play() {
        Log.e("player""ViolinPlayer====play violin");
    }
}

统一管理

package com.elaine.testpattern.facade;

/**
 * 统一的接口
 *
 * author: elaine
 * date: 2021/4/27
 */
public class PlayerFacade {
    private final BallPlayer ballPlayer;
    private final ChessPlayer chessPlayer;
    private final ViolinPlayer violinPlayer;

    public PlayerFacade() {
        ballPlayer = new BallPlayer();
        chessPlayer = new ChessPlayer();
        violinPlayer = new ViolinPlayer();
    }

    public void play() {
        ballPlayer.play();
        chessPlayer.play();
        violinPlayer.play();
    }
}

运行代码

private void use() {
   PlayerFacade playerFacade = new PlayerFacade();
   playerFacade.play();
}

运行结果

图片

若帅哥美女对该系列文章感兴趣,可微信搜索公众号(木子闲集)关注更多更新文章哦,谢谢~