相机有Android版本,Apple版本,Homos版本。请自建类模拟该产品的三个版本。以后还可能扩展该产品的版本如Imau版本。请利用工厂方法模式实现用户能根据需求获得该产品的不同版本对象。 用户的版本需求在配置文件中。编写Java项目,使用户可以自行选择相机版本
时间: 2024-10-25 13:04:10 浏览: 15
首先,我们需要定义一个接口 `Camera` 来描述相机的基本功能,然后为每个特定平台创建对应的类,比如 `AndroidCamera`, `AppleCamera`, 和 `HomosCamera`。接着,我们可以使用工厂方法模式创建一个 `CameraFactory` 类来根据配置文件中的信息动态生成相应版本的相机对象。这里是一个简单的实现:
```java
// Camera接口
public interface Camera {
void takePicture();
}
// 具体实现
public class AndroidCamera implements Camera {
@Override
public void takePicture() {
System.out.println("Taking picture on Android device...");
}
}
public class AppleCamera implements Camera {
@Override
public void takePicture() {
System.out.println("Taking picture on Apple device...");
}
}
public class HomosCamera implements Camera {
@Override
public void takePicture() {
System.out.println("Taking picture on Homos platform...");
}
}
// CameraFactory类
public class CameraFactory {
private static Map<String, Class<? extends Camera>> cameraClasses = new HashMap<>();
static {
cameraClasses.put("Android", AndroidCamera.class);
cameraClasses.put("Apple", AppleCamera.class);
cameraClasses.put("Homos", HomosCamera.class); // 这里假设已有Homos版本
// 可以在这里添加新的版本,如cameraClasses.put("Imau", ImauCamera.class);
}
public static Camera getCamera(String versionName) {
if (cameraClasses.containsKey(versionName)) {
try {
return cameraClasses.get(versionName).newInstance();
} catch (InstantiationException | IllegalAccessException e) {
throw new RuntimeException("Failed to instantiate camera for version " + versionName, e);
}
} else {
throw new IllegalArgumentException("Unsupported camera version: " + versionName);
}
}
}
// 用户代码
public class Main {
public static void main(String[] args) {
String configVersion = "Android"; // 从配置文件读取
Camera camera = CameraFactory.getCamera(configVersion);
camera.takePicture();
}
}
```
阅读全文