面向对象的困惑

看了许多面向对象建模的资料,貌似懂了,但实际应用时困难重重。

比如有以下业务:
开发一个订单模块系统,订单有多种类型,分零售订单(订单类型为:M)、渠道订单(订单类型:Q)等,且以后订单类型可能会增加。模型如下

如果采用的是如下分层

--domain
--dao
--service
--web

Service层有个类OrderService处理订单业务,但是多态性在哪里体现。难道OrderService分零售订单、渠道订单



public Class OrderService
{
public void CreateOrder(Order order)
{
if(order.OrderType=="M"
{
}
}
}

这个问题是分层导致的呢?

2010年04月01日 11:45 "kety633"的内容
Service层有个类OrderService处理订单业务,但是多态性在哪里体现。难道OrderService分零售订单、渠道订单 ...

OrderService应该是对抽象Order订单的统一提供服务的地方,OrderService不是逻辑实现的地方,是逻辑实现的场景,就像你把鞭炮放在院子里放,或放到广场放,都可以,院子和广场都是提供服务的地方,但不是服务的内容,服务的内容在领域模型+场景中,如点炮者点燃鞭炮。

所以,OrderService就是提供订单服务的入口和地方以及场景,事件传递到服务内部后,被领域模型接受处理,订单是领域模型,订单有相同也有不同,相同的抽象到Order中,不同的实现多态继承,进来的事件,由Order来处理,涉及到多态方面,分配到对应的渠道订单等细节处理。

可参考这个帖子:
DCI,领域模型,领域事件的一些想法
[该贴被banq于2010-04-06 11:07修改过]