首页 > 其他分享 >外观者模式

外观者模式

时间:2024-04-23 21:13:45浏览次数:25  
标签:外观 20 启动 private class 模式 new public

 

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

标签:外观,20,启动,private,class,模式,new,public
From: https://www.cnblogs.com/homle/p/18153741

相关文章

  • 网卡-模式标准
    目前主流的无线WIFI网络设备一共有以下几种模式:802.11a是一种Wi-Fi标准,工作在5GHz频段,提供最高54Mbps的数据传输速率。虽然速度较快,但覆盖范围较小。802.11b是Wi-Fi的最初标准之一,工作在2.4GHz频段,提供最高11Mbps的数据传输速率。虽然速度较慢,但拥有较广的覆盖范围。802.......
  • 设计模式习题
    面向对象设计原则1.配置文件可以不修改源代码就更换驱动程序---开闭原则----------功能需求变化了,需求扩展,不改代码2.A是B父类。C定义了A的对象obj为C的成员变量,C里还有一个setA的方法给obj变量赋值----里氏替换原则----通过父类的对象调用子类方法,可以替换父类3.子类有新方法......
  • 图解设计模式
    策略模式状态模式职责链模式职责链模式组装完成后,运行的是第一个类,被连接的类会依次执行职责链模式跟方法队列一样都会其他方法顺序执行的效果,不同点是职责链模式可以设定方法的执行顺序装饰模式装饰模式组装完成后,运行的是最外面的类,被装饰的类也会运行......
  • 手把手教你掌握SeaTunnel k8s运行Zeta引擎本地模式的技巧
    转载自小虾米0.0导读:随着Kubernetes的普及和发展,越来越多的企业和团队开始使用Kubernetes来管理和部署应用程序。然而,Kubernetes的默认工作方式可能不是最佳的选择,尤其是在需要更高效、更可靠的应用程序部署和管理能力时。因此,SeaTunnel提供了一种运行Zeta引擎(local-mode模式)......
  • 全量与增量的配置模式
    在系统管理和数据处理领域,全量与增量配置是两种常见的方法,用于实现数据同步、更新部署或资源管理等任务。它们分别适用于不同的场景,依据任务的特性和需求选择合适的配置模式,有助于优化资源利用、提高效率并确保数据或系统的准确性和一致性。一、全量配置模式1. 定义与特点全量......
  • 设计模式
    设计模式前言设计模式是一种通用的思维方式,可以在各个行业和领域中应用,帮助设计师和工程师解决复杂的设计和工程问题,提高系统的质量和效率。在软件开发过程中,我们要减少重复代码,对修改关闭,对扩展开放,但是切勿提前过度设计。设计模式不是银弹,过度使用设计模式反而会使代码变得复......
  • 策略模式优化if...else
    场景根据第三方系统的事件做出不同动作优化前@Slf4j@RestController@RequiredArgsConstructorpublicclassWebHookController{@PostMapping("/webhook")publicResponseEntity<Object>webhook(@RequestBodyJSONObjectbody){ Stringevent=body.getStri......
  • keycloak~jwks-rsa中使用的设计模式
    com.auth0.jwk组织下面的jwks-rsa包,主要实现的是通过公钥对jwt的签名进行验证,在这个包中,它使用了包装器的设计模式,对默认的jwks提供者添加了一缓存的支持,通过建立一个GuavaCachedJwkProvider类,传入一个默认的UrlJwkProvider来将这个Provider进行包装,让它具有缓存的能力!包装器模式......
  • 优化教学模式
    初中阶段,由于学习科目的增多,教学内容的加深,对学生的思维能力、计算能力和想象能力的要求也逐步提高这样不可避免地出现了一批后进生,严重地影响了教学质量的提高。因此,探索后进生的转化途径,是大面积提高数学教学质量的有效途径。面对后进生我们不能放弃,只能转化。后进生并不是智商......
  • 前端页面渲染(文档+数据)不同模式
    一张可被用户访问的页面,可以被拆分为主文档(html)和数据两个部分,这两个部分既可以是组合在一起的(SSR),也可以是分离的(SPA、异步渲染)。比如一些活动搭建平台,可以增加一个数据网关,实现SSR,提升用户体验。服务端渲染(Server-SideRendering,SSR)服务端渲染是一种在服务器上生成完整......