gpt4 book ai didi

java - 这些类之间应该是什么关系?

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

我希望调用 Type.getNo()方法来获得一些计算结果。如果如果if then else阻止在 Type.getNo()说“从 TypeX.getNo() 获取数据”,然后 TypeX.getNo()被内部调用;之后,结果将发送至Type.getNo() ,从那时起,Type.getNo()会将值返回给用户。在第二种情况下,结果为 TypeY.getNo()将会被使用。

对于类关系,这些类之间应该是什么关系?我觉得好像extends但是,我对如何实现这个场景有点困惑。为了推进我的项目,我应该使用设计模式来实现它吗?如果是,哪种设计模式适合这种情况?我感觉chain of responsibility看起来想修复,但在 chain of responsibility ,决定是在第三类上完成的,就我而言,它应该在另一个包中。另一方面,所有决策都应该在同一个类中完成。只是返回值将在其他包中可用。

                        |--------------------|
| Type |
|--------------------|
| +getNo():int |
| |
|--------------------|



|------------------| |----------------------|
| TypeX | | TypeY |
|------------------| |----------------------|
| | | |
| +getNo():int | | +getNo():int |
| | | |
|------------------| |----------------------|

TypeX and TypeY are visible to only to other classes in the same package

最佳答案

使用抽象类Type和两个扩展Type的类TypeXTypeY

类型

abstract class Type {

int no;

int getNo() {
return no;
}
}

TypeX

public class TypeX extends Type {

public TypeX(int no) {
this.no = no;
}

@Override
int getNo() {
System.out.println("TypeX.getNo()");
return no;
}
}

类型Y

public class TypeY extends Type {

public TypeY(int no) {
this.no = no;
}

@Override
int getNo() {
System.out.println("TypeY.getNo()");
return no;
}
}

应用程序

public class App {

public static void main(String[] args) {
Type x = new TypeX(1);
Type y = new TypeY(2);

System.out.println(x.getNo());
System.out.println(y.getNo());
}
}

输出:

TypeX.getNo()
1
TypeY.getNo()
2

关于java - 这些类之间应该是什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24837614/

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