gpt4 book ai didi

java - 依赖于多个子类实例的实例创建模式

转载 作者:太空宇宙 更新时间:2023-11-04 06:46:01 25 4
gpt4 key购买 nike

我有一个问题,因为我无法确定合适的设计模式。

我想根据已传递给工厂方法的给定类型创建实例。到目前为止我正在做的事情如下:

T create(SuperType x) {
if (x instanceof SubType1) {
// do some stuff and return a new SubType extends T
} else if (x instanceof SubType2) {
// do some stuff and return a new SubType extends T
} else if ...

} else {
throw new UnSupportedOperationException("nothing defined for " + x);
}
}

这对我来说似乎不是最好的做法。

有人知道如何更好地解决这个问题吗?

编辑:我收到的类不是我自己创建的,它是 http://wala.sourceforge.net/javadocs/trunk/com/ibm/wala/ssa/SSAInstruction.html 的实例它有几个子类,我根据传递的类型为其创建新实例。

最佳答案

在面向对象的编程中,类型的切换通常通过多态性来实现,可以通过将 create 方法移至 SuperType(可以为每个 Subtype 覆盖它)或通过 visitor pattern .

编辑:如果你不能改变类,多态性就过时了。但幸运的是,该类似乎支持访问者模式(请参阅它的 visit() 方法),因此您仍然可以使用它。

关于java - 依赖于多个子类实例的实例创建模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23978289/

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