java - 访客设计模式-电子商务

标签 java oop design-patterns arraylist visitor-pattern

我正在为大学考试编写一些 Java 代码,该项目基于“电子商务”。 要求之一是将产品插入购物车,我必须使用 Visitor 模式。 example visitor

这是教授给我的一个例子,我必须“用”它来代表我的购物车。 问题是我有一个 Product 类,其中包含 Category 类的实例,并且产品列表或类别列表存储在数据库中(我通过查询访问它们)每一步)。

现在,首先... book 是一个类别还是一个产品?例如,它可以与智能手机htc one m8进行比较吗? 另外,我有一个类,其中包含客户端“使用”的所有代码。在那里,我没有任何 ShoppingCart 对象,只有一个与用户相关的简单产品数组

如何在我的项目中实现此模式?哪条路是?

提前谢谢您。

最佳答案

实际上非常简单,例如在您的主类中,如果用户添加了 2 个元素:

    int totalPrice = 0;
    ShoppingCartVisitor cart = new ShoppingCartVisitorImpl();
    ItemElement element1 = new Fruit(2,3,"Apple");
    ItemElement element2 = new Book(30,"some ISBN number");
    totalPrice += element1.accept(cart);
    totalPrice += element2.accept(cart);

在 Fruit 和 book 中添加:

public void accept(ShoppingCartVisitor v) {
    v.visit(this);
}

以及 ShoppingCartVisitorImpl 中:

public int visit(Book b) {
     return b.getPrice();
}

public int visit(Fruit f) {
     return f.getPricePerKg()*f.getWeight();
}

关于java - 访客设计模式-电子商务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38704975/

相关文章:

java - 如何将 TextView 数据从第一个 Activity 发送到第三个 Activity

c++ - 在固定模板参数的同时扩展模板类

Laravel:使用特征或扩展模型之间的区别

java - ArrayList<int> 与 ArrayList<int[]>?

java - UnitTest (groovy + grails) - 无法拆卸元类

java - 从 DefaultListModel 绑定(bind)的 Jlist 是否可以仅显示某些元素?

java - 创建编译时未知的类的实例

c++ - 创建的 “new”实例的所有成员变量是否都存在于堆中而不是堆栈中?

java - OOP 设计以两种方式避免对象另一个对象

design-patterns - 应用工程和用户数量