假设有空调子系统,照明子系统,空气环境子系统都会向外发送数据,现设计一个系统可以接受以上三个,但不局限这三个子系统的数据。系统执行可简化为一串字符表示,如:如果接收到的是空调子系统数据,就输出空调子系统数据,具体实现可以在main方法中设定哪个系统数据,就输出那个系统输出字符串,要求:系统设计符合面向对象的设计原则
三个子空调类继承一个空调父类。
通过创建父类引用指向子类对象的方式实现。
思路:
实现代码如下:
子系统抽象:
/**
* 子系统抽象
*/
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();
}
}
以后增加新系统只需要修改工厂类即可。