当前位置: 首页 > 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.15wanjia.com/news/5785.html

相关文章:

  • 软件测试自学网站百度怎么注册自己的店铺
  • 企业解决方案英文百度关键词优化大
  • 360免费建站可靠吗推广一个产品有哪些方式
  • 南宁网页设计培训机构seo单页快速排名
  • 做网站哪个公司好国际新闻 军事
  • dede免费手机网站模板青岛seo网站管理
  • 谷歌推广开户seo教学网seo
  • 广州住房和建设局网站官网网站制作公司咨询
  • 海底捞网络营销方式semseo是什么意思
  • 中天银都建设集团网站微信投放广告多少钱
  • 网站开发什么百度竞价点击软件奔奔
  • 做效果图兼职的网站有哪些网络营销策划的流程
  • 武汉专业网站建设服务百度app下载最新版本
  • 西部数码网站管理助手 没有d盘搜索引擎是软件还是网站
  • wordpress本地上云邯郸seo优化公司
  • 帮别人做诈骗网站技术潍坊网站建设解决方案
  • 企业建站的目的是什么企业网站推广方案
  • 商务互联做网站怎么样网站优化公司哪家好
  • 哪个网站可以查当地建设项目国内疫情最新情况
  • 广州哪个大学做网站制作好些的黄冈网站推广软件费用是多少
  • 中国装修公司十大排名在线seo优化
  • 如何做拍卖网站潍坊网站seo
  • 高端网站定制站百度在线识别图片
  • 上海物流网站建设百度推广费
  • 拓什么设计网站什么企业需要网络营销和网络推广
  • b2c网站开发公司一个产品的市场营销策划方案
  • 灵感中心素材网站武汉seo优化公司
  • 网站后台管理系统制作教程seo1搬到哪里去了
  • 企业网站的形式有哪些品牌营销策划书
  • 个人做网站猛赚钱seo的中文意思是什么