Poging tot het flexibel laten werken van devices met features. Zou moeten werken via een enum, maar lukt nog niet.
This commit is contained in:
30
java/src/pm/Main.java
Normal file
30
java/src/pm/Main.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package pm;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import pm.device.Device;
|
||||
import pm.device.Features;
|
||||
import pm.device.exampledevice.ExampleDevice;
|
||||
|
||||
public class Main {
|
||||
ArrayList<Device> deviceList;
|
||||
|
||||
public Main() {
|
||||
deviceList = new ArrayList<Device>();
|
||||
}
|
||||
|
||||
public void addDevice(Device device) {
|
||||
deviceList.add(device);
|
||||
if (device.hasFeature(Features.RESTART)) {
|
||||
device.start();
|
||||
}
|
||||
}
|
||||
|
||||
public void start() {
|
||||
addDevice(new ExampleDevice());
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
new Main().start();
|
||||
}
|
||||
}
|
||||
31
java/src/pm/device/Device.java
Normal file
31
java/src/pm/device/Device.java
Normal file
@@ -0,0 +1,31 @@
|
||||
package pm.device;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import pm.device.feature.Feature;
|
||||
|
||||
|
||||
public abstract class Device {
|
||||
protected ArrayList<Feature> featureList;
|
||||
|
||||
protected Device() {
|
||||
featureList = new ArrayList<Feature>();
|
||||
}
|
||||
|
||||
public void addFeature(Feature feature) {
|
||||
if (!hasFeature(feature)) {
|
||||
if (this instanceof feature.getClass()) {
|
||||
|
||||
}
|
||||
featureList.add(feature);
|
||||
}
|
||||
}
|
||||
|
||||
public void removeFeature(Feature feature) {
|
||||
featureList.remove(feature);
|
||||
}
|
||||
|
||||
public boolean hasFeature(Feature feature) {
|
||||
return featureList.contains(feature);
|
||||
}
|
||||
}
|
||||
11
java/src/pm/device/Features.java
Normal file
11
java/src/pm/device/Features.java
Normal file
@@ -0,0 +1,11 @@
|
||||
package pm.device;
|
||||
|
||||
import pm.device.feature.Feature;
|
||||
import pm.device.feature.Restart;
|
||||
|
||||
public enum Features {
|
||||
Restart ((Class<Restart>)Restart.class);
|
||||
|
||||
Features(Class<Feature> feature) {
|
||||
}
|
||||
}
|
||||
22
java/src/pm/device/exampledevice/ExampleDevice.java
Normal file
22
java/src/pm/device/exampledevice/ExampleDevice.java
Normal file
@@ -0,0 +1,22 @@
|
||||
package pm.device.exampledevice;
|
||||
|
||||
import pm.device.Device;
|
||||
import pm.device.Features;
|
||||
|
||||
public class ExampleDevice extends Device {
|
||||
public ExampleDevice() {
|
||||
addFeature(Features.Restart);
|
||||
}
|
||||
|
||||
public void start() {
|
||||
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
|
||||
}
|
||||
|
||||
public void restart() {
|
||||
|
||||
}
|
||||
}
|
||||
5
java/src/pm/device/feature/Feature.java
Normal file
5
java/src/pm/device/feature/Feature.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package pm.device.feature;
|
||||
|
||||
public interface Feature {
|
||||
|
||||
}
|
||||
8
java/src/pm/device/feature/Restart.java
Normal file
8
java/src/pm/device/feature/Restart.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package pm.device.feature;
|
||||
|
||||
public interface Restart extends Feature {
|
||||
public static final String feature = "RESTART";
|
||||
|
||||
public void stop();
|
||||
public void restart();
|
||||
}
|
||||
Reference in New Issue
Block a user