Java门面模式

很多的情况下,我们调用第三方的工具的时候,我们并不需要知道某一个方法是怎么运行的或者具体是怎么实现的,实际上,调用者不需要知道被调用方的具体实现,这就是门面模式。

假象一下,我们开一辆车,如果我们要手动的去打开车盖去启动引擎,然后手动的安上传动轴,然后让引擎的动力传向轮胎,使得轮胎转动,如果我们真的像上面那样操作,那我们开一次车会累成狗。

所以我们引入了“自动化”的概念,把车变为一个只要启动命令就能启动的自动系统,我们只要钥匙就能启动引擎,转动轮子。

接下来贴上代码:

引擎类:

public class Engine {

    public void start(){
        System.out.println("引擎启动。。");
    }

    public void shutdown(){
        System.out.println("引擎停止。。");
    }
}

轮胎类:

public class Wheel {

    public void start(){
        System.out.println("轮子转动");
    }

    public void shutdown(){
        System.out.println("轮子停转");
    }
}

接下来我们就要使用car来封装上面汽车的组件:

/**
 * 这个Car类就是一个门面封装
 * 他让car的调用者不需要知道car内部的结构,也不需要知道car是具体怎么运行的
 */
public class Car {

    private Engine engine;

    private Wheel wheel;

    Car(){
        this.engine = new Engine();
        this.wheel = new Wheel();
    }

    public void run(){
        this.engine.start();
        this.wheel.start();
    }

    public void stop(){
        this.engine.shutdown();
        this.wheel.shutdown();
    }
}

接下来就是门面的调用方:

public class FacadeClient {

    public static void main(String[] args) {
        Car car = new Car();
        car.run();
        car.stop();
    }
}

这就是门面模式了,很简单,实际上就是把能封装的封装,额能解耦的解耦。

门面模式的优点:

1. 使得客户端和子系统之间解耦,让子系统内部的模块功能更容易扩展和维护;

2. 客户端根本不需要知道子系统内部的实现,或者根本不需要知道子系统内部的构成,它只需要跟Facade类交互即可。

3. 有些方法是对系统外的,有些方法是系统内部相互交互的使用的。子系统把那些暴露给外部的功能集中到门面中,这样就可以实现客户端的使用,很好的隐藏了子系统内部的细节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值