某产品的有Android版本,Apple版本,Homos版本。请自建类模拟该产品的三个版本。 (2)以后还可能扩展该产品的版本如Imau版本 (3)请利用工厂方法模式实现用户能根据需求获得该产品的不同版本对象。 (4)用户的版本需求在配置文件中。
时间: 2024-10-25 22:06:50 浏览: 15
为了模拟这个产品的多个版本,我们可以创建一个抽象产品类 `Product` 和几个具体的实现类,分别代表 Android、Apple 和 HomoS 版本。我们还会创建一个 `ProductFactory` 类使用工厂方法模式来根据配置文件动态创建相应的产品实例。
首先,定义 `Product` 接口:
```java
public interface Product {
void use();
String getVersion();
}
```
然后,为各个具体版本创建类:
```java
public class AndroidVersion extends Product {
@Override
public void use() {
System.out.println("Using Android version...");
}
@Override
public String getVersion() {
return "Android";
}
}
public class AppleVersion extends Product {
@Override
public void use() {
System.out.println("Using Apple version...");
}
@Override
public String getVersion() {
return "Apple";
}
}
public class HomoSVersion extends Product {
@Override
public void use() {
System.out.println("Using HomoS version...");
}
@Override
public String getVersion() {
return "HomoS";
}
}
```
接下来,创建 `ProductFactory` 类:
```java
import java.util.Map;
public class ProductFactory {
private static Map<String, Class<? extends Product>> productClasses =
Map.of(
"Android", AndroidVersion.class,
"Apple", AppleVersion.class,
"HomoS", HomoSVersion.class // 假设配置文件已包含这些版本
);
public static Product getProduct(String productName) {
try {
return productClasses.get(productName).newInstance();
} catch (InstantiationException | IllegalAccessException e) {
throw new RuntimeException("Error creating product instance.", e);
}
}
}
```
最后,配置文件可以是一个简单的 JSON 或 XML 文件,例如:
```json
{
"products": [
{"name": "Android", "version": "1.0"},
{"name": "Apple", "version": "iOS 15"},
{"name": "HomoS", "version": "latest"}
]
}
```
现在用户可以通过工厂方法获取他们想要的产品版本:
```java
public static void main(String[] args) {
Product configurationBasedProduct = ProductFactory.getProduct("Android"); // 获取Android版
configurationBasedProduct.use();
System.out.println(configurationBasedProduct.getVersion());
// 扩展Imau版本
if ("Imau".equals(configuredProducts.get("Imau"))) { // 假设Imau在配置文件中存在
ImauVersion imauVersion = ProductFactory.getProduct("Imau");
imauVersion.use();
System.out.println(imauVersion.getVersion());
}
}
```
阅读全文