原先如果开发一款斗地主游戏,可能所有的逻辑代码都会写在service层,逻辑一定相当复杂,精神需要高度集中才能保证代码的正确,日后如果新增功能,可能就会出现牵一发动全身的尴尬情况。
现在利用领域驱动设计,把原有的业务逻辑沉淀成业务模型,利用模型与需求对应起来(例如在斗地主当中,需求指出每把游戏需要三位玩家,一个游戏桌子,一个记分机器人等逻辑需求,这时候我们只需要把逻辑需求转化为一个个domain对象,而不用在向从前一样,写在service层),这是面向对象程序设计的进化,所以未来公司的资产不会只是一堆代码,而是经过反复推敲,技术沉淀下来可扩展松耦合的模型。
在领域驱动设计里面,dao层被称为基础设施层,domain不再只是简单数据库映射对象,里面只有set,get方法的数据模型。而是把业务当中每一块真实需求抽象出来形成模型。原本的service层最后则变为协调各个domain对象执行顺序或是domain对象状态传递,不再是存放业务逻辑的地方。