:如果接收到的是空调子系统数据,就输出空调子系统数据,具体实现可以在main方法中设定哪个系统数据,就输出那个系统输出字符串,要求:系统设计符合面向对象的设计原则

假设有空调子系统,照明子系统,空气环境子系统都会向外发送数据,现设计一个系统可以接受以上三个,但不局限这三个子系统的数据。系统执行可简化为一串字符表示,如:如果接收到的是空调子系统数据,就输出空调子系统数据,具体实现可以在main方法中设定哪个系统数据,就输出那个系统输出字符串,要求:系统设计符合面向对象的设计原则

三个子空调类继承一个空调父类。
通过创建父类引用指向子类对象的方式实现。

思路:

  1. 由于不同的子系统都可以发送数据,因此可以抽象出一个子系统接口,并提供一个发送数据的方法。
  2. 为了方便创建不同类型的子系统,可以抽象出一个工厂类,这个是可选的。

实现代码如下:
子系统抽象:

/**
 * 子系统抽象
 */
public interface Subsystem {

    /**
     * 发送数据
     */
    void send();
}

空调子系统:

/**
 * 空调子系统
 */
public class AirConditionSystem implements Subsystem {

    @Override
    public void send() {
        System.out.println("空调子系统发送数据");
    }

}

照明子系统:

/**
 * 照明子系统
 */
public class IlluminationSystem implements Subsystem {

    @Override
    public void send() {
        System.out.println("照明子系统发送数据");
    }
}

空气环境子系统:

/**
 * 空气环境子系统
 */
public class AirEnvironmentSystem implements Subsystem {

    @Override
    public void send() {
        System.out.println("空气环境子系统发送数据");
    }
}

工厂类如下:

/**
 * 子系统工厂
 */
public class SubSystemFactory {

    public static Subsystem createSubSystem(String type) {
        switch (type) {
            case "空调子系统":
                return new AirConditionSystem();
            case "照明子系统":
                return new IlluminationSystem();
            case "空气环境子系统":
                return new AirEnvironmentSystem();
        }
        return null;
    }
}

测试类如下:

public class Test {

    public static void main(String[] args) {
        Subsystem subsystem = SubSystemFactory.createSubSystem("空调子系统");
        subsystem.send();
    }
}

以后增加新系统只需要修改工厂类即可。