gpt4 book ai didi

用于灵活类创建的 Java 最佳实践库创建(工厂模式、抽象和接口(interface))

转载 作者:行者123 更新时间:2023-11-30 05:05:15 25 4
gpt4 key购买 nike

假设我是一家汽车制造商的 Java 软件开发人员。我的任务是创建一个可供众多内部应用程序使用的库。对于制造的每种类型的汽车模型,我创建一个代表该模型的 java 对象。我不仅必须能够跟踪当前模型,还必须能够跟踪原型(prototype)模型。原型(prototype)模型将有一个名称,一旦投入生产,该名称很可能会发生变化。我需要能够使用该库来解释原型(prototype)和 Flex,并在将它们切换到生产环境时更改名称。

我的问题是,最好的方法是什么?

这是我的想法...

我一直在阅读几本书,寻找最好的处理这种情况的想法。我立即想到使用工厂模式。我将有一个 CarModelFactory 类,它将为每个模型返回一个具体对象。例如:

public class CarModelFactory() {

public CarModel createCivicModel() {}
public CarModel createAccordModel() {}
public CarModel createPrototype1() {
return new ModelX();
}
public CarModel createPrototype1() {
return new ModelY();
}

这是最好的方法吗?我觉得应该有另一层抽象。我看到的问题是:

1) 如果 ModelX 投入生产,我为其创建一个方法并在 createPrototype1 方法中放入其他内容,现在调用该方法的程序会获取错误的对象,该怎么办

2)如何处理 ModelX 更改名称?

感谢您抽出时间!

最佳答案

工厂模型听起来不错,但我建议使用 createCarModel(String model)方法,它在映射中查找适当的对象。然后重命名汽车模型只需在该 map 中添加/删除即可。当然,要进行适当的同步,以防止重命名和获取发生冲突。

map 可能是 Map<String, Class<? extends CarModel>> ,以及createCar方法将使用无参构造函数实例化该类,这是您所需要的 Car s。

这样,每次添加或重命名模型时都不需要重新编译,因为工厂类不会更改其方法签名集。

此外,如果您覆盖 ClassLoader ,您可以卸载旧模型并加载新模型,从而使包含 .class 文件的实际目录保持干净(没有已制作成真实模型的旧原型(prototype)类)。

关于用于灵活类创建的 Java 最佳实践库创建(工厂模式、抽象和接口(interface)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5328225/

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