sharding-core-entry

  • 模块结构
    sharding-core-entry的主要功能是对sql进行分片得到SQLRouteResult,包含三个类:
  1. BaseShardingEngine。是抽象类,对外提供SQLRouteResult shard(final String sql, final List parameters)方法。此方法是模板方法,可以将一些子算法的实现,延迟到实现类中。cloneParameters()和route()的实现就是在子类完成的。
  2. PreparedQueryShardingEngine。它是BaseShardingEngine的实现类,实现了cloneParameters()和route()的实现就是在子类完成的。含有属性PreparedStatementRoutingEngine routingEngine;,它在route()中发挥了作用。
  3. SimpleQueryShardingEngine。它是BaseShardingEngine的实现类,实现了cloneParameters()和route()的实现就是在子类完成的。含有属性StatementRoutingEngine routingEngine;,它在route()中发挥了作用。
  • 模块结构图

  • 设计模式和设计原则

  1. 模板方法
    BaseShardingEngine类的SQLRouteResult shard(final String sql, final List parameters)方法使用了模板方法模式,父类BaseShardingEngine定义了整个算法的骨架,让子类去实现具体的细节。route()和cloneParameters()就是留给子类自定义的细节部分,使得子类在不变更整体算法的情况下,就可以重新定义该算法的特定步骤。