当前位置: 首页 > 面试题库 >

什么是Java中的辅助对象?

彭宜人
2023-03-14
问题内容

我遇到过几次被称为辅助对象的人…谁能详细说明这些辅助对象是什么,为什么我们需要它们?


问题答案:

几个类共有的一些操作可以移到辅助类,然后通过对象组合使用:

public class OrderService {
    private PriceHelper priceHelper = new PriceHelper();

    public double calculateOrderPrice(order) {
        double price = 0;
        for (Item item : order.getItems()) {
            double += priceHelper.calculatePrice(item.getProduct());
        }
    }
}

public class ProductService {
    private PriceHelper priceHelper = new PriceHelper();

    public double getProductPrice(Product product) {
        return priceHelper.calculatePrice(product);
    }
}

可以通过多种方式使用帮助程序类:

  • 直接实例化它们(如上所述)
  • 通过依赖注入
  • 通过制作它们的方法static并以静态方式访问它们,例如IOUtils.closeQuietly(inputStream)关闭所有InputStream抛出异常的方法。
  • 至少我的约定是只使用静态方法而不是依赖项来命名类XUtils,而具有依赖项的类/需要由DI容器进行管理XHelper

(上面的示例只是一个示例-不应从域驱动设计的角度对其进行讨论)



 类似资料:
  • 问题内容: 我知道这些问题听起来很愚蠢,但是在Java中,什么是辅助类,有人怎么写一个,以及编译器如何知道某种东西是辅助类? 编辑:我问这是因为编译器正在生成有关外部库中对象的警告,我想知道原因。 编辑2: 这是针对那些想要的人的编译器警告: 问题答案: 正如Java规范descried 在这里,你可以在一个java文件指定多个类。名称与.java文件名匹配的类将成为主要类,可以将其声明为公共类,

  • 问题内容: 每当我学习垃圾收集器时,都会听到术语“对象图”。到底是什么意思? 问题答案: 对象具有对其他对象的引用,这些对象又可以具有对更多对象(包括起始对象)的引用。这将创建对象图,在可及性分析中很有用。例如,如果起始对象是可到达的(例如,它在线程的本地堆栈中),则图形中的所有对象都是可到达的,并且确切的垃圾收集器无法收集任何这些对象。同样,如果我们创建所有可到达对象的列表,则从一组活动对象(根

  • 我目前正在我的应用程序中使用Guice。然而,我发现自己大多使用辅助注入,因为有一个注入对象链,它们都依赖于程序的输入。因此几乎所有的东西都是辅助注射的。 例如,A需要B,B需要c,c需要Z,Z需要来自命令行的输入。最后我感觉一切都将被辅助注射。因此,鉴于我坚持使用它,我想确定我使用它是正确的。 我个人觉得写我自己的工厂也一样好。此外,除了同样的优点之外,我还可以进一步将我所讨论的对象的创建限制在

  • 问题内容: 我发现Java 的根类方法没有实现: 如果我有一个and an ,如何不使用就知道the 和value ?只需执行即可。 我尝试了两个对象,但令我大吃惊的是值是相同的:它们都是1。 问题答案: 是一种方法,意味着系统库在内部被调用。有关更多详细信息,请参见Java本机接口。

  • 问题内容: 目前,我正在阅读“ Java并发实践”,其中包含以下句子: 由于线程访问无状态对象的操作不会影响其他线程上操作的正确性,因此无状态对象是线程安全的。 那么,什么是无状态对象? 问题答案: 无状态对象是没有实例字段(实例变量)的类的实例。该类 可能 具有字段,但是它们是编译时常量(静态final)。 一个非常相关的术语是 不可变的 。不可变的对象可能具有状态,但是在调用方法时状态不会改变

  • 我有下面的泛型函数,我想从多个类中使用。问题是,如果我从帮助器类调用它,由于可见性,我无法获得字段对象。