欢迎来到“雪碧聊技术”CSDN博客!

在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将不断探索Java的深邃世界,分享最新的技术动态、实战经验以及项目心得。

让我们一同在Java的广阔天地中遨游,携手提升技术能力,共创美好未来!感谢您的关注与支持,期待在“雪碧聊技术”与您共同成长!


 

目录

一、案例要求

二、编写代码

1、编写父类:家电类JD

2、编写子类:电视类TV、洗衣机类WashMachine、灯类Lamp、空调类Air。

3、编写操作接口Switch

4、编写智能控制系统类(单例模式)

5、编写测试类

三、效果展示


一、案例要求

二、编写代码

1、编写父类:家电类JD

//父类
public class JD implements Switch{
    //名称
    private String name;
    //状态
    private boolean status;//false,默认是关闭的

    //构造器
    public JD() {
    }
    public JD(String name, boolean status) {
        this.name = name;
        this.status = status;
    }
    //get、set
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isStatus() {
        return status;
    }

    public void setStatus(boolean status) {
        this.status = status;
    }
    //“点击按钮”方法
    @Override
    public void press() {
        //控制当前设备开、关
        status = !status;
    }
}

2、编写子类:电视类TV、洗衣机类WashMachine、灯类Lamp、空调类Air。

//电视类
public class TV extends JD{
    //全参构造
    public TV(String name, boolean status) {
        super(name, status);
    }
}
//洗衣机类
public class WashMachine extends JD{
    public WashMachine(String name, boolean status) {
        super(name, status);
    }
}
//灯类
public class Lamp extends JD{

    public Lamp(String name, boolean status) {
        super(name,status);
    }
}
//空调
public class Air extends JD{
    public Air(String name, boolean status) {
        super(name, status);
    }
}

3、编写操作接口Switch

public interface Switch {
    void press();//按压开关
}

4、编写智能控制系统类(单例模式)

//智能控制系统类(单例模式)
public class SmartHomeControl {
    //2、定义静态变量,来记住一个对象
    private static final SmartHomeControl smartHomeControl = new SmartHomeControl();

    //1、构造器私有化
    private SmartHomeControl(){}
    //3、提供静态方法,用来获取该单例
    public static SmartHomeControl getInstance(){
        return smartHomeControl;
    }
    //形参用到了多态。
    public void control(JD jd){
        System.out.println("---------------------------------------");
        System.out.println(jd.getName() + "状态目前是:" + (jd.isStatus()?"开着":"关闭"));
        System.out.println("开始您的操作......");
        jd.press();//按下开关
        System.out.println(jd.getName() + "状态已经是:" + (jd.isStatus()?"开着":"关闭"));
        System.out.println("---------------------------------------");

    }
    //输出每个家电的开关状态
    public void printAllStatus(JD[] jds) {
        System.out.println("======================================");
        //使用for循环遍历
        for(int i =0;i<jds.length;i++){
            System.out.println((i+1)+"、"+jds[i].getName() + "状态目前是:" + (jds[i].isStatus()?"开着":"关闭"));
        }
        System.out.println("======================================");
    }
}

5、编写测试类

public class Test {
    public static void main(String[] args) {
        //购置四种家电:电视、洗衣机、灯、空调
        JD[] jds = new JD[4];
        jds[0] = new TV("小米电视", true);
        jds[1] = new WashMachine("美的洗衣机", false);
        jds[2] = new Lamp("欧灯",false);
        jds[3] = new Air("美的空调",false);
        //生成智能控制系统类(单例模式)
        SmartHomeControl smartHomeControl = SmartHomeControl.getInstance();
        
        
        while(true) {
            //打印全部设备的开关现状
            smartHomeControl.printAllStatus(jds);
            //提示用户操作
            System.out.println("请您选择要控制的设备(序号):");
            Scanner sc = new Scanner(System.in);
            String command = sc.next();
            switch (command) {
                case "1":
                    smartHomeControl.control(jds[0]);
                    break;
                case "2":
                    smartHomeControl.control(jds[1]);
                    break;
                case "3":
                    smartHomeControl.control(jds[2]);
                    break;
                case "4":
                    smartHomeControl.control(jds[3]);
                    break;
                case "exit":
                    System.out.println("退出App!");
                    return;
                default:
                    System.out.println("输入有误,请重新输入");
            }
        }
    }
}

三、效果展示

目前,2、3、4号设备,全是关闭状态,我们要打开它们:

======================================
1、小米电视状态目前是:开着
2、美的洗衣机状态目前是:关闭
3、欧灯状态目前是:关闭
4、美的空调状态目前是:关闭
======================================
请您选择要控制的设备(序号):
2
---------------------------------------
美的洗衣机状态目前是:关闭
开始您的操作......
美的洗衣机状态已经是:开着
---------------------------------------
======================================
1、小米电视状态目前是:开着
2、美的洗衣机状态目前是:开着
3、欧灯状态目前是:关闭
4、美的空调状态目前是:关闭
======================================
请您选择要控制的设备(序号):
3
---------------------------------------
欧灯状态目前是:关闭
开始您的操作......
欧灯状态已经是:开着
---------------------------------------
======================================
1、小米电视状态目前是:开着
2、美的洗衣机状态目前是:开着
3、欧灯状态目前是:开着
4、美的空调状态目前是:关闭
======================================
请您选择要控制的设备(序号):
4
---------------------------------------
美的空调状态目前是:关闭
开始您的操作......
美的空调状态已经是:开着
---------------------------------------
======================================
1、小米电视状态目前是:开着
2、美的洗衣机状态目前是:开着
3、欧灯状态目前是:开着
4、美的空调状态目前是:开着
======================================
请您选择要控制的设备(序号):
0
输入有误,请重新输入
======================================
1、小米电视状态目前是:开着
2、美的洗衣机状态目前是:开着
3、欧灯状态目前是:开着
4、美的空调状态目前是:开着
======================================
请您选择要控制的设备(序号):
exit
退出App!

以上,就是智能家居系统的全部代码,想了解更多的Java知识,请关注本博主~~

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐