【问题标题】:Java Bean encapsulates many objects into one,How?Java Bean 将许多对象封装成一个,如何实现?
【发布时间】:2020-02-27 15:36:42
【问题描述】:

我刚开始阅读有关 Java Beans 的内容,并且遇到了一个与 Topic 的问题完全相同的问题。所以我重复这个问题:

在定义上是说“java bean将许多对象封装成一个对象(Bean)。

1.这里的“很多对象”是什么意思?

2.java bean如何将它们封装成一个对象?


编辑:

来自Java Beans Wikipedia

在基于 Java 平台的计算中,JavaBean 是将许多对象封装成单个对象(bean)的类。


编辑2: 所有类都具有具有多个属性和字段的能力。 如果封装许多对象意味着拥有多个属性和字段,我不明白为什么他们提到这种能力是 java bean 类的优势。

【问题讨论】:

标签: java spring javabeans


【解决方案1】:

首先要明确一点,Java 中的每个Class 都扩展了Object 类型。像String 这样的东西也是Object

“许多对象”是指我们如何使用不同的对象作为 bean 中的字段。这将与您的Objects 的 bean 建立 has-a 关系。

例如,假设我们有这个Bean

public class YourBean implements java.io.Serializable {

    private String s;
    private ArrayList<String> list;

    //Omitted rest of bean boilerplate
}

此示例将在其中包含两个不同的Objects,String s 和名为listArrayList&lt;String&gt;。您可以根据需要向 bean 添加任意数量的不同 Objects 和原语。

要使用无参数构造函数创建 bean,您可以使用:

YourBean bean = new YourBean();

您可以设置和获取封装在其中的Objects 的值:

ArrayList<String> yourList = new ArrayList<>();
bean.setList(yourList);
System.out.println(bean.getList());

通过引用我命名为 bean 的 bean Object,您将能够以这种方式引用 bean 中的所有 Objects

此外,您还可以创建多个相同类型的bean,因此每次创建new YourBean(),您还可以使用其中包含的所有Objects

此功能不是Bean 独有的,您可以在任何Class 中执行此操作,而Bean 是用于描述您编写某些类的特定方式的术语。

我建议研究 Java Composition 以了解何时应该使用 has-a 关系,而不是 inheritance,后者是 >is-a 关系。

【讨论】:

  • 非常感谢您的解释。当然所有的职业都有这个能力,但是我不明白为什么他们提到这个能力是bean的优势。
  • @Meh Sar 它不一定称其为 优势,维基百科正在解释 bean 是什么。如果您没有任何类字段,则它不是 bean。 bean 只是您可以编写的特定类型的类的术语。它说“JavaBeans 类,将许多对象封装到一个对象(bean)中”。即使在您链接的维基百科文章中的优势列表下,它也不会将多个对象写成一个。
【解决方案2】:

我们通常谈论 Spring bean,但我认为这不是你在谈论的。在我看来,这些 JavaBean 只不过是具有多个属性的类,并且只有 getter/setter,但其构造函数的参数为​​零(因此它是可变的)。就如此容易。封装许多对象的事实是由于它具有多个属性。

但是,我从未将它们称为 JavaBean,我认为我曾经使用过的最相似的概念是 POJO。我不确定是否有任何区别,但目的看起来是一样的。

如果你曾经谈论过 Java 中的 bean,我想任何人都会想到 Spring bean。我建议你不要在其他情况下使用它。

这只是我的猜测。如果我说错了,请告诉我。

【讨论】:

  • 非常感谢您的解释。当然所有的类都具有这种能力(具有多个属性),但我不明白为什么他们提到这种能力是 bean 的优势
  • 我认为这是因为他们将 bean 解释为一种模式。在这种情况下,封装是它的主要特点。任何类都可以使用它(他们确实如此),但在 bean 中,重点是封装。我想这就是原因。
【解决方案3】:

JAVA Bean

JavaBeans 的概念最初是为 Swing 设计的,以促进独立 GUI 组件的开发,但该模式已被重新用于 Spring bean 领域和 Hibernate 的后端持久性

另一方面,POJO 是简单的 java 类。


另一种观点:

任何与第三方交互的 POJO 都会变成 JAVA BEAN :)

  • Java 类与任何 ORM(比如 Hibernate)交互
  • Java 类在 EJB 中用作会话对象

正如他们所说,“能力越大,责任越大” [摘自蜘蛛侠]

所以我们普通的 Pojos 变成了 JAVA BEANS :)

值得一读的文章:https://mossgreen.github.io/Java-Bean-VS-Spring-Bean/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多