---------------------
| AbstractPersister |
---------------------
^
/ \
---
|
------------------
| OrderPersister |
------------------
^
/ \
---
|
--------- ---------
| Offer |<>---| Item |
--------- ---------
以上是UML类图的ascii art。我有一个名为“offer”的域类,其中包含项目。例如。旅行报价为500美元,包含公交车票,在汽车旅馆住宿和演出。
当客户退出商店时,优惠会作为包含订单商品的订单持久保存到数据库。
在纯粹的面向对象设计中,使提供继承自OrderPersister
是否有意义? OrderPersister
可以使用其超类AbstractPersister
获得与数据库的连接。我想向OrderPersister
添加一个名为Book
的方法,该方法将在数据库中创建订单及其项目。
如果这是一个糟糕的设计,有什么替代品?我希望这可以尽可能面向对象。
答案 0 :(得分:1)
在扩展课程之前,你应该问这个问题:是吗?
优惠是OrderPersister吗?我说不是。
您应该查看Data Mapper模式。它将允许您使用对持久性一无所知的域对象,并且仍然能够持久化它们。