1. 介绍

  定义一个高层接口,给子系统中的一组接口提供一个一致的界面,用来访问子系统的一群接口,也就是说通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节

 

2. 代码实现

/**
 * @Description :电池充电
 * @date :2024/4/23 20:43
 */
public class StorateBattery {

    //电量百分比
    private double energy;

    private static Random rand = new Random(47);

    public StorateBattery() {
        energy = rand.nextDouble();   //随机电量
    }

    //是否有足够的电量
    public boolean hasEnoughenergy(){
        return energy > 0.1;
    }
}
/**
 * @Description :点火开关
 * @date :2024/4/23 20:46
 */
public class IgnitionLock {

    public void ignite(){
        System.out.println("点火开关开启");
    }
}
/**
 * @Description :启动机
 * @date :2024/4/23 20:47
 */
public class Starter {

    public void work(){
        System.out.println("启动机工作");
    }
}
/**
 * @Description :发动机
 * @date :2024/4/23 20:47
 */
public class Engine {

    public void run(){
        System.out.println("发送机运转");
        System.out.println("汽车启动");
    }
}
/**
 * @Description :
 * @date :2024/4/23 20:48
 */
public class Facade {

    private StorateBattery storateBattery;

    private IgnitionLock ignitionLock;

    private Starter starter;

    private Engine engine;

    public Facade(){
        storateBattery = new StorateBattery();
        ignitionLock = new IgnitionLock();
        starter = new Starter();
        engine = new Engine();
    }

    /**
     * 提供统一的接口
     */
    public void startCar(){
        if (storateBattery.hasEnoughenergy()){
            ignitionLock.ignite();
            starter.work();
            engine.run();
        }
    }
}
public class Client {
    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.startCar();
    }
}

  汽车启动时,司机只需要插入启动钥匙,转一下钥匙就可以轻易将汽车启动(当然,汽车档位和手刹要正确),看似简单的操作,其背后有一系列部件配合运行,才将汽车顺利启动,这些部件组成了汽车的启动系统,我们不妨将启动系统各个机械装置拆分来看,当作一个个子系统,为了简化,大致的启动汽车的原理假设简化成这样子:司机转动钥匙->点火系统通电->启动机启动->带动发动机启动->汽车启动成功。当然,实际要比这个复杂很多

  参考:https://www.cnblogs.com/yxlaisj/p/10519527.html

posted on 2024-04-23 20:58  homle  阅读(5)  评论(0编辑  收藏  举报