gpt4 book ai didi

java - 扩展静态工厂方法模式

转载 作者:行者123 更新时间:2023-12-02 06:46:26 25 4
gpt4 key购买 nike

我有一个使用静态 Factory Method 的现有代码库实例化某些对象类型的设计:

public static Something createSomething(int x, int y, .....)
{
// creates a Something object
}

我想扩展此方法,允许它根据指示如何创建对象的新参数,以不同的方式初始化 Something 对象。

最简单(且可扩展性最差)的方法是向工厂方法添加新参数。

这似乎不是正确的做事方式:

  1. 有不止 1 个工厂方法需要更新,而不仅仅是一个。
  2. 创建新方法将强制更改调用工厂的客户端代码。这违背了使用单一位置生成对象的目的。
  3. 添加更多参数会导致参数列表过长,不方便使用。

是否有更好的方法来扩展工厂方法?

最佳答案

创建一个新方法,并使用参数对象作为参数 ( Is this a named pattern? )。这样,您就不会更改以前的实现,并且可以接受任何新的实现(您可以更改参数对象,而不会影响当前对该方法的现有调用)。

其他想法:是的,这样,你有两种方法,但如果你做得正确,这不是问题:

public static Something createSomething(int x, int y, .....)
{
/// 1. Implementation
/// OR
/// 2. return createSomething(new SomethingDescription(parameters ...));
}

public static Something createSomething(SomethingDescription description)
{
/// 1. return createSomething(description.x, description.y, ...);
/// OR
/// 2. Implementation
}

但是,如果对象确实很复杂,并且可以通过多种方式构建,那么您应该切换到 Builder 模式,正如 Sotirios Delimanolis 所建议的那样。

关于java - 扩展静态工厂方法模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18600454/

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