门面模式来啦

门面模式也叫外观模式在许多源码和实际案例中都有使用,例如后端代码框架MVC模式,slf4j源码使用等

案例

举个🌰,在大多数玄幻小说中都会出现一种法器,那就是阵盘。

传统意义上的阵法需要现场布置,需要花费不少的时间,在这个时间里敌人基本上能把你噶了,所以传统阵法对于临场对敌的作用不大。后面有修炼了阵道和器道的奇才把二者合二为一,这就是阵盘的出现。阵盘,将阵法固化在法器上使得阵法可直接使用,无需布置且不懂阵法的修士也可使用。

代码抽象

其中重要的抽象概念就是阵法和法器了,那么对阵法进行抽象使得法器上铭刻多种阵法

首先我们定义一个接口

public interface Zhenfa {
   void use();
}

定义几个实现类

//金光阵
public class Jinguangzhen implements Zhenfa {

   @Override
   public void use() {
      System.out.println("Jinguangzhen::use()");
   }
}

//八卦阵
public class Baguazhen implements Zhenfa {

   @Override
   public void use() {
      System.out.println("Baguazhen::use()");
   }
}

阵盘:法器上铭刻阵法

//阵盘
public class Zhenpan {
   private Zhenfa baguazhen;
   private Zhenfa jinguangzhen;
  

   public ZhenpanMaker() {
      baguazhen = new Baguazhen();
      jinguangzhen = new Jinguangzhen();
   }

  /**
   * 下面定义一堆方法,具体应该调用什么方法,由这个阵盘来决定
   */

   //使用金光阵
   public void useJjinguanzheng(){
      jinguangzhen.use();
   }
    //使用八卦阵
   public void useBaguazheng(){
      baguazhen.use();
   }
 
}

修士使用阵盘:输入法力选择阵法即可

public static void main(String[] args) {
  ZhenpanMaker zhenpanMaker = new ZhenpanMaker();

  //使用更清晰且不关注底层的复杂性(例如阵法小白也能使用)
  zhenpanMaker.useJinguanzhen();
  zhenpanMaker.useBaguazhen();   
}

门面模式的优点显而易见,客户端不再需要关注实例化时应该使用哪个实现类,直接调用门面提供的方法就可以了,因为门面类提供的方法的方法名对于客户端来说已经很友好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值