gpt4 book ai didi

java - 将对象类型作为方法参数传递是否总是设计不佳的标志?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:31:58 28 4
gpt4 key购买 nike

假设我有以下枚举

public enum EmailType {
FORGET_PASSWORD, ACHIEVMENT_UNLOCK, WELCOME
}

我有一个根据类型生成电子邮件主题的函数(但它仍然需要动态数据),例如

public String generateEmailSubject(EmailType emailType, Object obj) {
String subject;
switch(emailType) {
case WELCOME:
User user = (User) obj;
subject = "Hello " + user.getFirstName();
case FORGET_PASSWORD:
User user = (User) obj;
subject = "Forget password " + user.getEmail();
break;
case ACHIEVMENT_UNLOCK:
Achievment achievment = (Achievment) obj;
subject = "Achievment Unlock:" + achievment.getTitle();
break;
}

return subject;
}

这是不好的做法吗?如果是这样,处理这个问题的好设计是什么?也许每个 EmailType 都有一个单独的方法,但这可能会导致很多方法,并且当我需要更改它们时,主题不会集中。

最佳答案

你可以为此使用多态性。

interface Subjectable {
String getSubject();
}

class Achievement implements Subjectable {
...
@Override
public String getSubject() {
return "Achievement unlocked: " + getTitle();
}
}

class User implements Subjectable {
...
@Override
public String getSubject() {
return "Forgot password: " + getEmail();
}
}

那么您不需要显式检查对象的类型:您只需对其调用 getSubject()

关于java - 将对象类型作为方法参数传递是否总是设计不佳的标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53087229/

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