---------------------
| AbstractPersister |
---------------------
^
/
---
|
------------------
| OrderPersister |
------------------
^
/
---
|
--------- ---------
| Offer |<>---| Item |
--------- ---------
以上是 UML 类图的 ascii 艺术。 我有一个名为"offer"的域类,其中包含项目。 例如,花费 500 美元的旅行报价,其中包含一张巴士票、在汽车旅馆住宿一晚和一场表演。
当客户结帐时,产品/服务将作为包含订单项的订单保存到数据库中。
在纯面向对象的设计中,使产品/服务继承OrderPersister
是否有意义? OrderPersister
可以使用其超类 AbstractPersister
获取与数据库的连接。 我想向OrderPersister
添加一个名为 Book
的方法,它将在数据库中创建订单及其项目。
如果这是一个糟糕的设计,还有什么替代方案? 我希望这尽可能面向对象。
在扩展类之前,你应该问这个问题:a?
报价是订单吗?我说不是。
您应该查看数据映射器模式。它将允许您使用对持久性一无所知的域对象,并且仍然能够持久化它们。