java - 这是聚合的正确用法吗

标签 java oop arraylist object-oriented-analysis

我想模拟收银系统。交易结束后,收据将显示在监视器上。我创建了一个名为 Receipt 的类,它包含有关客户购买的商品、小计和客户姓名的信息。因此,在 Receipt 类中,我创建了一个产品的 ArrayList 和一个买家对象作为实例变量。 toString() 函数将返回一个格式良好的字符串。

我不确定是否应该使用 ArrayList 作为实例变量,也不知道聚合是否是这里的最佳选择。

import java.util.ArrayList;

public class Receipt {
    private ArrayList<Product> purchased_products;
    private double total_price;
    private double total_with_tax;
    private Buyer buyer;

    public Receipt(Buyer buyer, ArrayList<Product> purchased_products, 
            double total_price, double total_with_tax) {
        this.purchased_products = new ArrayList<>(purchased_products);
        this.total_price = total_price;
        this.buyer = buyer;
        this.total_with_tax = total_with_tax;
    }

    @Override
    public String toString() {
        String content = "Receipt: \nConvenience Store\n";
        content += "Balance Summary:\n";
        for (Product product : purchased_products) {
            content += product + "\n";
        }
        content += String.format("%d Subtotals: $%.2f\nAmount Paid: $%.2f\n", purchased_products.size(), total_price,
                total_with_tax);
        content += buyer.toString() + "\n";
        content += "Thank you for shopping with us. Have a wonderful day!\n";
        return content;
    }

}

最佳答案

一切看起来都很好,而且你几乎做得正确。

构造函数中的一个小修正是您不需要再次拥有新的数组列表。

只是

 this.purchased_products = purchased_products;

够了。

关于java - 这是聚合的正确用法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32709740/

相关文章:

java - 需要帮助来理解 Java 中 ArrayList 的反序列化

java - 无法启动 Activity 组件信息(适配器构造函数)

java - 加载百分比时 Android ProgressBar 消息发生变化

c++ - 什么可以实例化?

java - 输入新值时刷新另一个 View (JComboBox)

java - 如何将数字放入通用列表中?

java - 搜索数组列表中的特定对象并打印数组列表中的所有对象

java - Resilience4j 返回一个带有参数的尝试过的方法的 CompletableFuture

java - JSR Bean 验证和多个组,AND 与 OR

PHP 父类(super class)在不知道它们的情况下调用子类方法?