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

男的直接做的视频网站营销咨询公司经营范围

男的直接做的视频网站,营销咨询公司经营范围,佛山专业做网站,杭州营销网站建设目录 前言 UML plantuml 类图 实战代码 AbstractRoutingDataSource DynamicDataSource DynamicDataSourceContextHolder 前言 在设计类时,一般优先考虑使用组合来替代继承,能够让程序更加的灵活,但这并不意味着要完全抛弃掉继承。 …

目录

前言

UML

plantuml

类图

实战代码

AbstractRoutingDataSource

DynamicDataSource

DynamicDataSourceContextHolder


前言

在设计类时,一般优先考虑使用组合来替代继承,能够让程序更加的灵活,但这并不意味着要完全抛弃掉继承。

继承在面向对象编程中用来减少代码冗余和提高复用性,是面向对象编程的一大特性。

只不过在使用继承时必须满足一些条件,才能让我们更好地利用继承,设计出更易维护和扩展的程序。

一般情况下,使用继承需要满足一下两个条件

  1. 父类所有的属性和方法,都能在子类中适用
  2. 子类无需复用其他类的方法,并且不会覆写父类已有的方法

模板方法模式是继承使用的优雅示例,一般会设计一个抽象类,在类中定义了一个操作的算法结构,其中一些步骤被设计为抽象方法,需要子类去实现,这些方法被称为模板方法。

模板方法允许子类在不改变算法结构的情况下,重新定义算法的某些特定步骤。

UML

plantuml

@startuml
'https://plantuml.com/class-diagramabstract Template {+ doSomething() : void- step1() : void- step2() : void+ {abstract} step3() : void
}class Concrete {+ step3() : void
}class Client {}Template <|-- ConcreteClient ..> Concrete
@enduml

类图

实战代码

AbstractRoutingDataSource

业务上需要用到动态数据源,可以继承 spring 框架提供的抽象类 AbstractRoutingDataSource 来实现运行中动态切换数据源功能。

初始化动态数据源时,将所有的数据源都保存在 private Map<Object, DataSource> resolvedDataSources 中,每一个数据源对应一个唯一标识

抽象类定义了决定目标数据源的方法(determineTargetDataSource),用来决定当前操作要使用动态数据源中的哪一个数据源,方法中调用了模板方法(determineCurrentLookupKey),子类只需要实现 determineCurrentLookupKey 这个模板方法,动态地返回数据源唯一标识,便能够实现动态切换数据源了

determineTargetDataSource 与 determineCurrentLookupKey

DynamicDataSource

public class DynamicDataSource extends AbstractRoutingDataSource {public DynamicDataSource(DataSource defaultTargetDataSource, Map<Object, Object> targetDataSources) {super.setDefaultTargetDataSource(defaultTargetDataSource);super.setTargetDataSources(targetDataSources);super.afterPropertiesSet();}@Overrideprotected Object determineCurrentLookupKey() {return DynamicDataSourceContextHolder.getDataSourceType();}
}

DynamicDataSourceContextHolder

public class DynamicDataSourceContextHolder {/*** 使用ThreadLocal维护变量,ThreadLocal为每个使用该变量的线程提供独立的变量副本,*  所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。*/private static final ThreadLocal<String> CONTEXT_HOLDER = new ThreadLocal<>();/*** 设置数据源变量* @param dataSourceType*/public static void setDataSourceType(String dataSourceType){System.out.printf("切换到{%s}数据源", dataSourceType);CONTEXT_HOLDER.set(dataSourceType);}/*** 获取数据源变量* @return*/public static String getDataSourceType(){return CONTEXT_HOLDER.get();}/*** 清空数据源变量*/public static void clearDataSourceType(){CONTEXT_HOLDER.remove();}
}
http://www.hengruixuexiao.com/news/8528.html

相关文章:

  • google移动网站建站十大原则成都门户网站建设
  • 动漫在线制作网站网站网络推广运营
  • 上海专业网站建老铁seo外链工具
  • 加强网站备案管理专项行动今日时政新闻
  • 做淘宝网店需要多少钱seo关键词优化报价
  • 网站建设基本内容教育培训机构排名
  • 建设什么网站可以上传视频营销手段和技巧
  • 上海浦东哪里有做网站的公司seo网络营销推广公司
  • 广告公司名称取名自贡网站seo
  • 沈阳网站建设专家工具站seo
  • 做网店在素材网站找的图侵权吗湖南网站设计外包哪家好
  • web网站设计的要求兰州网络推广推广机构
  • 网站的seo怎么做竞价排名
  • 浏览器怎么做能不拦截网站b2b网站平台有哪些
  • java做视频网站的需求合肥网络推广平台
  • 网站商城建设合同范本关键词推广优化app
  • 泰州网站制作网站软文范例大全100
  • 韩国网站后缀优化近义词
  • 做网站 图片 文件夹 放哪儿seo收费
  • 茶网站建设方案seo网站优化怎么做
  • 网站app开发平台百度搜索排行
  • 浙江建设信息港手机版长春seo网站优化
  • 国外 网站设计济南网站优化公司排名
  • 做网站排版广州seo推广公司
  • 福田区罗湖区盐田区关键词整站优化
  • 下载做网站的软件网络营销推广的方式
  • 北京疫情情况 最新消息今天推推蛙seo
  • 免费广告行业网站建设如何推广自己的产品
  • 网站设计师对应的专业最近发生的热点事件
  • 商标注册号站内关键词排名优化软件