当前位置: 首页 > wzjs >正文

信阳市人民政府门户网站搜索引擎有哪些

信阳市人民政府门户网站,搜索引擎有哪些,网站换主机换域名,可以做图接单的网站MyBatis 配置文件解析过程中,主要运用了以下几种设计模式 1. 建造者模式 (Builder Pattern): 应用场景: SqlSessionFactoryBuilder 和 XMLConfigBuilder 类都体现了建造者模式。模式描述: 建造者模式将一个复杂对象的构建过程与其表示分离,使得同样的构…

MyBatis 配置文件解析过程中,主要运用了以下几种设计模式

1. 建造者模式 (Builder Pattern):

  • 应用场景: SqlSessionFactoryBuilderXMLConfigBuilder 类都体现了建造者模式。
  • 模式描述: 建造者模式将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。它允许用户一步一步地构造复杂对象,而无需知道内部构建细节。
  • MyBatis 中的应用:
    • SqlSessionFactoryBuilder: 作为 SqlSessionFactory 的建造者,它抽象了 SqlSessionFactory 的创建过程。开发者通过 SqlSessionFactoryBuilder.build() 方法,传入不同的配置源 (如 InputStream, Configuration 对象),就可以构建出 SqlSessionFactory 实例,而无需了解 SqlSessionFactory 内部的复杂初始化过程。
    • XMLConfigBuilder: 作为 Configuration 对象的建造者,它负责解析 XML 配置文件 (mybatis-config.xml),并逐步构建 Configuration 对象。 XMLConfigBuilder.parse() 方法封装了对 XML 配置文件的解析、验证、以及将配置信息填充到 Configuration 对象中的复杂流程。

2. 工厂模式 (Factory Pattern):

  • 应用场景: SqlSessionFactoryBuilder 本身也可以被视为 SqlSessionFactory 的工厂。 MapperProxyFactory 是 Mapper 代理对象的工厂。
  • 模式描述: 工厂模式提供了一种创建对象的最佳方式,将对象的创建逻辑封装在一个工厂类中,客户端代码只需要通过工厂类来获取对象,而无需关心对象的具体创建过程。
  • MyBatis 中的应用:
    • SqlSessionFactoryBuilder: 可以看作是 SqlSessionFactory 的抽象工厂。 SqlSessionFactoryBuilder 提供了 build() 方法,用于创建 SqlSessionFactory 实例,隐藏了 SqlSessionFactory 的具体实现类 (DefaultSqlSessionFactory) 和创建细节。
    • MapperProxyFactory: 作为 Mapper 接口代理对象的工厂,MapperProxyFactory 负责创建 Mapper 接口的动态代理对象 (使用 JDK 动态代理或 CGLIB)。 MapperProxyFactory.newInstance() 方法隐藏了代理对象的创建细节,客户端代码只需要通过 MapperRegistry.getMapper() 方法就可以获取 Mapper 代理对象。

3. 模板方法模式 (Template Method Pattern):

  • 应用场景:XMLConfigBuilderXMLMapperBuilder 的 XML 解析过程中,存在一些通用的解析流程,但具体的解析步骤可能因 XML 元素类型而异。 模板方法模式被用于定义通用的解析框架,并将具体的解析步骤延迟到子类实现。
  • 模式描述: 模板方法模式在一个抽象类中定义一个算法的骨架,并将某些步骤延迟到子类中实现。 这样,子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
  • MyBatis 中的应用 (推测,更偏内部实现):
    • XML 解析流程: XMLConfigBuilderXMLMapperBuilderparse() 方法可能使用了模板方法模式。 parse() 方法定义了 XML 解析的通用流程 (例如:加载 XML -> 解析根元素 -> 顺序解析子元素 -> 构建对象),而具体的子元素解析逻辑 (例如解析 <properties>, <settings>, <mappers>, <select>, <resultMap> 等) 则可能由不同的子类或策略类来实现。 (需要更深入源码才能确认,但模板方法模式很适合这种场景)。

4. 策略模式 (Strategy Pattern):

  • 应用场景: MyBatis 配置文件中,某些配置项可能存在多种策略或实现方式,例如缓存实现类型 (<cache type="...">),事务管理器类型 (<transactionManager type="...">),数据源类型 (<dataSource type="...">) 等。 策略模式被用于允许在运行时动态地选择和切换不同的策略实现。
  • 模式描述: 策略模式定义了一系列算法,并将每个算法封装到独立的策略类中,使得算法可以独立于使用它的客户端代码而变化。
  • MyBatis 中的应用:
    • 缓存策略 (<cache type="...">): MyBatis 允许配置不同的缓存实现类型 (例如 PERPETUAL, LRU, FIFO, WEAK, SOFT, 或自定义缓存实现)。 每种缓存类型都对应一个 Cache 接口的实现类 (策略类)。 在解析 <cache> 元素时,XMLConfigBuilder 会根据 type 属性的值,动态地选择并创建对应的 Cache 实现类实例。
    • 事务管理器类型 (<transactionManager type="...">): MyBatis 支持不同的事务管理器类型 (例如 JDBC, MANAGED, 或自定义事务管理器)。 每种事务管理器类型都对应一个 TransactionFactory 接口的实现类 (策略类)。 在解析 <transactionManager> 元素时,XMLConfigBuilder 会根据 type 属性的值,动态地选择并创建对应的 TransactionFactory 实现类实例。
    • 数据源类型 (<dataSource type="...">): MyBatis 支持不同的数据源类型 (例如 UNPOOLED, POOLED, JNDI, 或自定义数据源实现)。 每种数据源类型都对应一个 DataSourceFactory 接口的实现类 (策略类)。 在解析 <dataSource> 元素时,XMLConfigBuilder 会根据 type 属性的值,动态地选择并创建对应的 DataSourceFactory 实现类实例。

5. 注册器模式 (Registry Pattern) (可以归类到工厂模式的变种):

  • 应用场景: TypeHandlerRegistryMapperRegistry 本身可以看作是注册器模式的应用。 它们负责注册和管理特定类型的组件 (TypeHandler 和 Mapper 接口)。
  • 模式描述: 注册器模式用于创建一个集中管理特定类型对象的注册中心,并提供根据键值获取已注册对象的能力。
  • MyBatis 中的应用:
    • TypeHandlerRegistry: 作为 TypeHandler 的注册中心,负责注册和管理所有 TypeHandler,并提供 getTypeHandler() 方法根据 Java 类型和 JDBC 类型查找 TypeHandler。
    • MapperRegistry: 作为 Mapper 接口的注册中心,负责注册和管理所有 Mapper 接口,并提供 getMapper() 方法根据 Mapper 接口类型获取 Mapper 代理对象.

总结:

MyBatis 配置文件解析过程巧妙地运用了多种设计模式,主要包括:

  • 建造者模式 (Builder Pattern): 用于构建复杂的 SqlSessionFactoryConfiguration 对象。
  • 工厂模式 (Factory Pattern): 用于创建 SqlSessionFactory 和 Mapper 代理对象。
  • 模板方法模式 (Template Method Pattern): 可能用于定义 XML 解析的通用流程 (更偏内部实现)。
  • 策略模式 (Strategy Pattern): 用于支持多种可切换的配置策略 (缓存策略、事务管理器类型、数据源类型等)。
  • 注册器模式 (Registry Pattern): 用于管理特定类型的组件 (TypeHandler 和 Mapper 接口)。
http://www.dtcms.com/wzjs/241540.html

相关文章:

  • 网站备案哪里管百度人工智能
  • 网站公司排行榜前十名自媒体软文发布平台
  • 高端网站定制开发设计制作seo推广系统排名榜
  • 单位网站建设的必要性哈尔滨seo优化公司
  • 网站主题分析网络营销软件条件
  • 深圳网站设计首选刻seo根据什么具体优化
  • 视频网站用php做文案代写收费标准
  • 济南简单的网站制作线上推广宣传方式有哪些
  • 网站排版怎么做的哪个合肥seo好
  • 做百度联盟怎么才能创建多个网站友情链接系统
  • 做一网站企业管理8大系统
  • 电子商务网站设计说明书广州线下教学
  • 不同网站建设特点深圳市企业网站seo营销工具
  • 动态网站建设论文企业网站的推广阶段
  • 制作一个链接网站在线观看的seo综合查询
  • 怎么用ip做网站核心关键词
  • 三只松鼠网站怎样做流量推广app
  • 辽宁沈阳做网站好看的网站设计
  • 做58一样的网站应用宝aso优化
  • 制作人英语衡阳seo外包
  • 网站建设广告有哪些平台营销案例最新
  • 长沙装修公司排名榜秦皇岛seo招聘
  • 网站开发主要内容ip营销的概念
  • 高端网站建设文案重庆seo什么意思
  • 网站快捷按钮以什么方式做公司品牌推广方案范文
  • 焦作做网站公司比百度还强大的搜索引擎
  • 用什么做淘宝客网站好网站推广联盟
  • 可以做防盗水印的网站宁波怎么优化seo关键词
  • 检测网站是否做了301网站点击软件排名
  • 大连网站制作公司费用多少西安网站建设哪家好