gpt4 book ai didi

java - 在 Java 中使层模块化/可扩展

转载 作者:行者123 更新时间:2023-11-30 03:10:59 24 4
gpt4 key购买 nike

我是 Java 世界的新手,在我的应用程序中遇到了一些困难。我将应用程序分为几个层(UI、 Controller ……)。底层负责从传感器收集数据。

我的目标是使这一层可扩展,以便外部用户/程序员可以轻松地在其中添加新的传感器。

我是否只需将每个传感器分成不同的类别,或者是否有其他解决方案?

如果这是一个“奇怪”的问题,我很抱歉,我只是一个新手:)

谢谢!

最佳答案

本质上,您正在构建的是一个框架。传感器代码将遵循好莱坞原则:“不要调用我,我会调用你”

这是通过应用依赖倒置原则来实现的。

您创建一个接口(interface)Sensor.java:

public interface Sensor {
Reading getReading();
}

还有一个 Reading.java(使其通用是一个开闭原则挑战,与您需要从传感器数据结构中获得多少通用性相关):

public final class Reading {
}

还有一个 SensorReader.java:

public final class SensorReader {
private final Iterable<Sensor> sensors;
public SensorReader(Iterable<Sensor> sensors) {
this.sensors = sensors;
}
public void readSensors() {
for (Sensor sensor : sensors) {
Reading reading = sensor.getReading();
// so stuff with reading
}
}
}

这里上面的所有内容都是框架,这里过去的所有内容都是应用程序/客户端代码。

还有一个 MotorEncoder.java:

final class MotorEncoder implements Sensor {
@Override
public Reading getReading() {
// do stuff to actually read motor encoder
return new Reading();
}
}

还有一个Application.java:

import java.util.Arrays;

public final class Application {
public static void main(String[] args) {
Sensor sensor = new MotorEncoder();
SensorReader sensorReader = new SensorReader(Arrays.asList(sensor));
sensorReader.readSensors();
}
}

关于java - 在 Java 中使层模块化/可扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33650330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com