gpt4 book ai didi

java - JSF 实用程序类

转载 作者:搜寻专家 更新时间:2023-11-01 02:53:49 24 4
gpt4 key购买 nike

您认为实现 JSF 2.0 托管 bean 实用程序方法的最佳方式是什么,例如:

public FacesContext getFacesContext() {
return FacesContext.getCurrentInstance();
}

public Flash getFlash() {
return getFacesContext().getExternalContext().getFlash();
}

public void addMessage(String clientId, String message) {
FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_INFO, message,
message);
getFacesContext().addMessage(clientId, facesMessage);
}

我正在考虑作为抽象类或具有静态方法的普通类。

我的理解是,扩展类产生的对象会消耗更多内存,但大多数(几乎所有)它们都是请求范围的,因此一旦呈现响应就符合垃圾收集的条件。

我对最好的 OO 设计和对服务器的负担最少感兴趣。谢谢

最佳答案

My understanding is that object resulting from extending classes will consumes more memory

这不是真的。只有状态消耗更多内存。这些方法没有/使用额外的状态 - 这正是您可以使它们成为static而不用担心线程安全问题的原因。

是的,您看到这确实可以通过两种主要方式解决:

  1. 将它们放在一个抽象类中,您可以让所有托管 bean 扩展该类。

    public class Bean extends BaseBean {
    public void submit() {
    addInfoMessage("Submit successful");
    }
    }
  2. 将它们放在一个实用类中,您最终可以通过 import static 导入它(不,不要将它与单例混淆,因为单例有状态,但实用类没有' t).

    public class Bean {
    public void submit() {
    Jsf.addInfoMessage("Submit successful");
    }
    }

两者都是可以接受的,主要区别仅在于抽象类方式更易于通过测试框架进行模拟/测试,这可能是严格的业务需求。

关于java - JSF 实用程序类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5882954/

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