gpt4 book ai didi

用于限制返回对象的可用方法的 Java 设计模式

转载 作者:行者123 更新时间:2023-12-01 15:34:35 27 4
gpt4 key购买 nike

我是一名新的 Java/OO 程序员。我想创建一个方法(下面称为 myMethod ),它根据检查输入参数和世界状态返回 n 类型的对象之一。为了简单起见,在这里说n == 2:myMethod()可以返回任一类型 Foo 的对象或Bar

Foo 和 Bar 有不同的方法可供调用,有些是专有的,有些是共同的,例如:

ReturnType? myMethod(inputs) {
if (/*examining state of world & inputs implies a Foo*/)
return new Foo();
return new Bar();
}
...

public class Foo {
public Foo() {}
public void x() {...} //common to Bar
public void f() {...}
}
public class Bar {
public Bar() {}
public void x() {...} //common to Foo
public void b() {...}
}

我应该使用什么设计模式myMethod() ,对于 Foo 和 Bar 类?如果我的方法的返回类型是 Foo 和 Bar 的父类(super class)(或聚合?),或者 Foo 和 Bar 实现一些公共(public)接口(interface),那么对于从 myMethod() 接收对象的客户端有没有办法?能够安全地调用f()b()在返回的对象上而不需要使用对象内省(introspection)或转换?

或者这个设计是反模式吗?我是否缺少明显的重写?谢谢。

最佳答案

没有模式 - 你无法在了解类型和类型转换的情况下做到这一点。

您必须将这些方法拉到公共(public)接口(interface)或父类或强制转换。没有任何“模式”可以拯救你 - 这是神奇的思维。

关于用于限制返回对象的可用方法的 Java 设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9089920/

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