【发布时间】:2021-05-26 00:45:27
【问题描述】:
我正在设计购物网站。截至目前,我被困在某一点上,需要一点反馈。假设我有一个订单类定义如下:
class Order {
Payment payment;
Address ShippingAddress
int orderId;
List<Item> orderItem;
double orderValue;
Buyer buyer;
Date orderDate;
NotificationService notificationService;
Shipment shipment;
List<OrderLog> orderLog;
public OrderStatus placeOrder();
public OrderStatus trackOrder();
public void addOrderLogs();
public PaymentInfo makePayment();
public int createShipment();
}
在订单类中有placeOrder()、makePayment() 等API 有意义吗?或者我应该创建一个单独的OrderManager 来帮助处理所有与订单相关的事情,并且订单将充当 pojo?
对我来说,第一个似乎是正确的,因为 placeOrder()、makePayment() 在我看来是秩序行为,它们应该在秩序类中,但在其他类中,我认为对于秩序类来说太多了。我我采用一种方法而不是另一种方法违反了一些 SOLID 原则?由于 OrderManager 也将执行我们在此类中添加的相同操作,因此将其移出是否有意义?
placeOrder(),makePayment() 等,对我来说似乎是秩序。有什么想法吗?
在扩展笔记中,如何自信地决定什么会留在课堂上,什么不会?
【问题讨论】:
-
创建一个单独的 OrderManager 类。 Order 类应该只包含有关订单的信息。下订单会结合客户和订单信息。收款与订单无关,尽管支付过程需要平衡支付与订单。接受付款结合了客户和付款信息。随着您获得经验,您将更好地确定您的系统对象。您获得的业务经验越多越好。
-
但我正在阅读一些关于管理器类不好的文章,它们对管理器类的介绍可能是不良架构的标志:softwareengineering.stackexchange.com/questions/129537/…,虽然我们在日常生活中使用它们。但我开始阅读关于 SOLID 和良好的设计实践,然后我开始产生一些疑问。
标签: java oop design-patterns api-design