随笔 - 79,  文章 - 0,  评论 - 1,  阅读 - 45505

 

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   homle  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2022-04-23 Gradle常用总结

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示