【问题标题】:Java bean instantiation methodJava bean 实例化方法
【发布时间】:2019-03-21 08:31:28
【问题描述】:

这是一个关于代码结构而不是语法的问题。我正在构建一个包含多个 Java bean 对象的程序。 Java bean 有一个无参数构造函数。通常当我想要一个豆子时,我会这样做

MyBean bean = new MyBean();
bean.setPropertyOne("Foo");
bean.setPropertyTwo("Bar");

如果我有 12 种 bean 类型,并且每次需要新 bean 时我都会不断地重写上述版本,这似乎有很多潜在的冗余。有一个带参数的构造函数会更有意义,但这违背了 Java Bean 设计模式。我正在考虑创建一个不同的数据类,它具有所有不同 bean 的所有 Bean 创建方法,然后每次我需要时通过该类获取所需的 bean,这可能是有意义的。这将保持代码模块化。然后我可以按如下方式访问 bean:

MyBean bean = myBeanCreationUtility.makeMyBean("Foo", "bar");

当你编写软件时,通常使用什么样的设计模式来构建这个?

【问题讨论】:

  • 工厂模式
  • 你不能只使用 HashMap 吗?或者你可以看看 Kotlin,它相当简化了 POJO:kotlinlang.org/docs/reference/data-classes.html
  • 你可以创建both一个没有参数的构造函数(留空)一个有参数的构造函数。
  • @JayBlack 是的,你可以在这里查看创建模式,看看哪一个更适合你的用例java-design-patterns.com/patterns
  • @JayBlack 阅读该页面更好:它说,像我一样,“如果该类至少有一个接受一个或多个参数的构造函数,它还必须有一个没有参数的构造函数有资格作为一个 JavaBean”。

标签: java design-patterns javabeans


【解决方案1】:

工厂模式正是您所寻找的。检查包含多种设计模式的this website,包括创建模式,如工厂方法或抽象工厂。

【讨论】:

  • 工厂方法和抽象工厂都与实例化 Java Bean 没有任何关系。不过,Builder 模式是一种选择。
  • 是的,它们确实如此,因为它们也是创造模式和建造者。一件事不排除另一件事。
  • Java Beans 排除了 GoF 工厂模式。
猜你喜欢
  • 1970-01-01
  • 2018-09-05
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多