模式1

MVC(Model–view–controller)是软件工程中的一种软件架构模式,基于此模式把软件系统分为三个基本部分:

模型(Model)(实现业务逻辑,数据逻辑实现。)

视图(View)( UI设计人员进行图形界面设计,负责实现与用户交互。)

控制器(Controller)(负责获取请求,处理请求,响应结果。)

目的是通过这样的设计使程序结构更加简洁、直观,降低问题的复杂度。

MVC架构模式的设计中,首先基于单一职责原则(SRP-Single responsibility principle)让每个对象各司其职,各尽所能。

然后再基于“高内聚,低耦合”的设计思想实现相关层对象之间的交互。这样可以更好提高程序的可维护性和可扩展性。

 

领域驱动设计 domain-driven design  为解决场景下的问题而形成的一套模型,然后使用这套模型来解决业务问题。 根据重复劳动经验我们会形成一套模式。领域模型也一样会形成一套模式,他包括:实体、值对象、模块、领域服务。

使用资源库将领域模型更新到数据库。 在一个一对多的实体,例如:用户组和用户,用户组内有N个用户, 如果用户非常多,一次加载用户组肯定会造成性能损失,这种问题怎么设计呢? 使用了领域模型想的方案应该是拆分。

领域模式是解决领域内的业务问题的,他不是解决架构问题,所以领域模型本身不需要引入架构。 当你使用领域模型的时候,领域层之上你可以使用架构,比如CQRSMVC等等。

 

 

CQRS(Command Query Responsibility Segration)就是一个系统,从架构上把 CRUD 系统拆分为两部分:命令(Command)处理和查询(Query)处理。其中命令处理包括增、删、改。然后命令与查询两边可以用不同的架构实现,以实现CQ两端(即Command Side,简称C端;Query Side,简称Q端)的分别优化。

1、CQ 两端数据库共享,只是在上层代码上分离。这样做的好处是可以让代码读写分离,更容易维护,而且不存在 CQ 两端的数据一致性问题,因为是共享一个数据库的。

2、CQ 两端不仅代码分离,数据库也分离,然后Q端数据由C端同步过来。同步方式有两种:同步或异步,如果需要 CQ 两端的强一致性,则需要用同步;如果能接受 CQ 两端数据的最终一致性,则可以使用异步。C端可以采用Event Sourcing(简称ES)模式,所有C端的最新数据全部用 Domain Event 表达即可;而要查询显示用的数据,则从Q端的 ReadDB(关系型数据库)查询即可。

你可能感兴趣的:(Java后端,设计模式)