(1)某产品的有Android版本,Apple版本,Homos版本。请自建类模拟该产品的三个版本。 (2)以后还可能扩展该产品的版本如Imau版本 (3)请利用工厂方法模式实现用户能根据需求获得该产品的不同版本对象。 (4)用户的版本需求在配置文件中。 编写java代码
时间: 2024-10-22 18:20:49 浏览: 23
为了模拟这个产品的三个现有版本(Android、Apple和HomeOS)以及预留未来可能的Imau版本,并利用工厂方法模式,我们可以创建以下代码:
首先,定义一个基础产品接口 `Product` 和具体的实现类:
```java
// 定义基础产品接口
public interface Product {
void use();
}
// Android 版本产品
public class AndroidProduct extends Product {
@Override
public void use() {
System.out.println("Using Android version of the product.");
}
}
// Apple 版本产品
public class AppleProduct extends Product {
@Override
public void use() {
System.out.println("Using Apple version of the product.");
}
}
// HomeOS 版本产品
public class HomeOST_product extends Product {
@Override
public void use() {
System.out.println("Using HomeOS version of the product.");
}
}
// 预留 Imau 版本,暂未实现
public class ImauProduct { /* 类未完全实现 */ }
```
接下来,创建一个工厂接口和具体的工厂类:
```java
// 定义产品工厂接口
public interface ProductFactory {
Product getProduct(String platform);
}
// 实现工厂类
public class ProductFactoryImpl implements ProductFactory {
private Map<String, Class<Product>> platformsToProducts;
public ProductFactoryImpl() {
platformsToProducts = new HashMap<>();
platformsToProducts.put("android", AndroidProduct.class);
platformsToProducts.put("apple", AppleProduct.class);
platformsToProducts.put("homeos", HomeOST_product.class); // 已有产品
// platformsToProducts.put("imau", ImauProduct.class); // 可以添加新平台
}
@Override
public Product getProduct(String platform) {
try {
return platformsToProducts.get(platform).newInstance();
} catch (InstantiationException | IllegalAccessException e) {
throw new RuntimeException("Failed to create product instance for platform", e);
}
}
}
```
最后,用户可以根据配置文件中的版本信息获取对应的产品:
```java
public class Main {
public static void main(String[] args) {
// 读取配置文件获取平台名
String platform = readPlatformFromConfig();
ProductFactory factory = new ProductFactoryImpl();
Product product = factory.getProduct(platform);
product.use(); // 使用产品
}
private static String readPlatformFromConfig() { // 这里假设从配置文件读取,实际可根据实际情况修改
// 模拟配置文件
String config = "platform=apple";
return config.split("=")[1].trim();
}
}
```
阅读全文