访客设计模式 - 电子商务
Visitor Design Pattern - eCommerce
我正在为大学考试编写一些 Java 代码,该项目基于 "e-commerce"。
其中一项要求是将产品插入购物车,我必须使用 Visitor
模式。
这是教授给我的一个例子,我必须"use"它代表我的购物车。
问题是我有一个 Product
class ,其中包含 Category
class 和产品列表或类别列表存储在数据库中(我访问它们通过每一步查询)。
现在,首先... book
是类别还是产品?例如,它可以与 smartphone 或 htc one m8 进行比较?
另外,我有一个 class,其中包含客户的所有代码 "used"。在那里,我没有任何 ShoppingCart 对象,只有一个与用户相关的简单 ArrayList of Products
。
如何在我的项目中实施这种模式?哪条路?
提前致谢。
其实很简单,例如在你的main中class如果用户添加了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 代码,该项目基于 "e-commerce"。
其中一项要求是将产品插入购物车,我必须使用 Visitor
模式。
这是教授给我的一个例子,我必须"use"它代表我的购物车。
问题是我有一个 Product
class ,其中包含 Category
class 和产品列表或类别列表存储在数据库中(我访问它们通过每一步查询)。
现在,首先... book
是类别还是产品?例如,它可以与 smartphone 或 htc one m8 进行比较?
另外,我有一个 class,其中包含客户的所有代码 "used"。在那里,我没有任何 ShoppingCart 对象,只有一个与用户相关的简单 ArrayList of Products
。
如何在我的项目中实施这种模式?哪条路?
提前致谢。
其实很简单,例如在你的main中class如果用户添加了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();
}