さまざまな場所でビルダー パターンが推奨されているのを見てきましたが、Struts を使用する Web アプリケーション内のスレッド セーフについては確信が持てませんでした。
静的メソッドの変数build
が共有されているのか、ビルダー コードを呼び出す各スレッドの内部にあるのかは不明です。大丈夫だとは思いますが、ビルダー コードが Web アプリケーション内に存在し、一度に数十のスレッドによって呼び出される可能性があることを確認したいと思います。
public static class ExampleBuilder {
public static Thing build(ActionForm form) {
String property1 = form.property1;
String property2 = form.property2;
String propertyX = form.propertyX;
...
return new Thing(property1, ...);
}
}
public class ExampleStrutsAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
Thing example = ExampleBuilder.build(form)
return mapping.findForward("success");
}
}