饮水机不能制热怎么维修

饮水机不能制热怎么维修

首页家电维修饮水机更新时间:2022-02-06 10:05:06
一、内容概述

状态机模式:允许一个对象在其内部状态发生改变时,改变其行为。状态决定行为。下面通过一个饮水机的制冷、制热模式的切换来描述一下状态机模式

二、代码实战

/** * 状态模式:状态模式允许一个对象的状态改变时,改变其自身的行为 * 状态模式的具体表现: * 1.状态决定行为,对象的行为由内部状态决定的 * 2.对象的状态在运行期间被改变时,它的行为也因此改变 * * 下面通过饮水机的实例来模仿状态模式 * 场景如下:在这个炎热的夏季,办公室的小伙伴基本上都需要喝点冷水,早上一起来就会把饮水机调整为制冷模式,但是张三有一个吃泡面的习惯,他想吃 * 泡面的时候就会把饮水机调整为制热模式,所以他每次吃泡面,下一个同时都需要把模式调整为制冷,最后下班,李四就会关闭饮水机电源。 * Created by yangwei on 2020/8/4. */ sealed class WaterMachineState(open val machine: WaterMachine) { fun trunHeating() { if (this !is Heating) { println("运行制热") machine.state = machine.heating } else { println("this state is already heating mode") } } fun trunCooling() { if (this !is Cooling) { println("运行制冷") machine.state = machine.cooling } else { println("this state is alrready cooling mode") } } fun trunOff() { if (this !is Off) { println("关闭饮水机") machine.state = machine.off } else { println("this state is already off") } } /** * 开关 */ class Off(override val machine: WaterMachine) : WaterMachineState(machine) { } /** * 制热 */ class Heating(override val machine: WaterMachine) : WaterMachineState(machine) { } /** * 制冷 */ class Cooling(override val machine: WaterMachine) : WaterMachineState(machine) { } } class WaterMachine { var state: WaterMachineState val off = WaterMachineState.Off(this) val heating = WaterMachineState.Heating(this) val cooling = WaterMachineState.Cooling(this) init { this.state = off } /** * 运行制热 */ fun trunHeating() { this.state.trunHeating() } /** * 运行制冷 */ fun trunCooling() { this.state.trunCooling() } /** * 关闭饮水机 */ fun trunOff() { this.state.trunOff() } enum class Moment { EARLY_MOMENT, //早上上班 DRINKING_WATER, //日常饮水 INSTANCE_NOODLES, //泡面 AFTER_WORK//下班 } /** * 操作饮水机方法 */ fun waterMachineOps(machine: WaterMachine, moment: Moment) { when (moment) { Moment.EARLY_MOMENT, Moment.DRINKING_WATER -> when (machine.state) { !is WaterMachineState.Cooling -> machine.trunCooling() } Moment.INSTANCE_NOODLES -> when (machine.state) { !is WaterMachineState.Heating -> machine.trunHeating() } Moment.AFTER_WORK -> when (machine.state) { !is WaterMachineState.Off -> machine.trunOff() } } } } /** * 程序的入口,测试饮水机的行为 */ fun main(args: Array<String>) { val machine = WaterMachine() machine.waterMachineOps(machine, WaterMachine.Moment.DRINKING_WATER) machine.waterMachineOps(machine, WaterMachine.Moment.INSTANCE_NOODLES) machine.waterMachineOps(machine, WaterMachine.Moment.DRINKING_WATER) machine.waterMachineOps(machine, WaterMachine.Moment.AFTER_WORK) }

运行结果: 运行制冷 运行制热 运行制冷 关闭饮水机

三、结束语

状态机模式就一点,利用对象自身的状态改变自己的行为。

,

大家还看了
也许喜欢
更多栏目

© 2021 3dmxku.com,All Rights Reserved.