命令和查询的责任分离
命令查询分离(CQS)是一种由Bertrand Meyer首先提出的模式。他基于对象级描述该模式。后来,这种模式摆脱了低水平的徘徊,被用于高级架构(模式)级别。
在我们开发的大多数系统中,我们主要是基于关系型数据库的设计,由数据库来进行数据的存储,通过sql语句进行数据的修订和查询,这里增删改即是我我们的命令,查是查询,通常作用下,我们在一个DAO里面至少提供四种接口,增删改查,这里属于面向对象的设计,对象的所有操作都在DAO中做体现。
命令查询分离模式是将系统中所有查询分离出来,大多数系统的查询都是基于多表形式的,而且未在数据库设计中体现类的关系,这时候把查询功能分离出来,就可以做很多扩展,对于查询量大的系统是一种很好的设计方式。
这里的职责分离,也是敏捷设计中单一职责设计原则,进行责任分离,减少职责耦合,对复用性大大提高。