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

一站式做网站服务/广西南宁做网站的公司

一站式做网站服务,广西南宁做网站的公司,wordpress 插件手册,网站建设网络推广最低价格spring 用到的九种设计模式 1.简单工厂模式 又叫做静态工厂模式 简单工厂模式实质是有一个工厂类根据传入的参数&#xff0c;动态决定应该创建哪一个产品类。 这个很明显&#xff0c;在各种BeanFactory以及ApplicationContext创建中都用到了&#xff1b; <beans><b…

                             spring 用到的九种设计模式


1.简单工厂模式

又叫做静态工厂模式

简单工厂模式实质是有一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。
这个很明显,在各种BeanFactory以及ApplicationContext创建中都用到了;

<beans><bean id="singletonBean" class="com.itxxz.HelloItxxz"><constructor-arg><value>Hello! 这是singletonBean!value></constructor-arg></ bean><bean id="itxxzBean" class="com.itxxz.HelloItxxz"singleton="false"><constructor-arg><value>Hello! 这是itxxzBean! value></constructor-arg></bean></beans>

2.工厂方法

 

通常由应用程序直接使用new创建新的想,为了将对象的创建和使用相分离,采用工厂模式,即应用程序将对象的创建及初始化职责交给工厂对象。

一般情况下,应用程序有自己的工厂对象来创建bean。如果将应用程序自己的工厂对象交给spring管理,那么spring管理的就是普通的bean,而是工厂bean

import java.util.Random;public class StaticFactoryBean {public static Integer createRandom() {return new Integer(new Random().nextInt());}}

建一个config.xm配置文件,将其纳入Spring容器来管理,需要通过factory-method指定静态方法名称

<bean id="random"

class="example.chapter3.StaticFactoryBean" factory-method="createRandom" //createRandom方法必须是static的,才能找到 scope="prototype"

/>

测试:

public static void main(String[] args) {
      //调用getBean()时,返回随机数.如果没有指定factory-method,会返回StaticFactoryBean的实例,即返回工厂Bean的实例       XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("config.xml"));       System.out.println("我是IT学习者创建的实例:"+factory.getBean("random").toString());

}

 

 

3.单例模式

保证一个类中只有一个实例,并提供一个访问它的全局访问点。

 

4.适配器

在spring的Aop中,使用的Advice来增强被代理类的功能。spring实现这一Aop功能的原理就使用代理模式(1.jdk动态代理 2.cglib字节码生成技术代理)对类进行方法级别的切面增强,

public interface AdvisorAdapter {boolean supportsAdvice(Advice advice);MethodInterceptor getInterceptor(Advisor advisor);} MethodBeforeAdviceAdapter类,Adapterclass MethodBeforeAdviceAdapter implements AdvisorAdapter, Serializable {public boolean supportsAdvice(Advice advice) {return (advice instanceof MethodBeforeAdvice);}public MethodInterceptor getInterceptor(Advisor advisor) {MethodBeforeAdvice advice = (MethodBeforeAdvice) advisor.getAdvice();return new MethodBeforeAdviceInterceptor(advice);}}

5.包装器

在我们的项目中遇到这样一个问题:我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。我们以往在spring和hibernate框架中总是配置一个数据源,因而sessionFactory的dataSource属性总是指向这个数据源并且恒定不变,所有DAO在使用sessionFactory的时候都是通过这个数据源访问数据库。但是现在,由于项目的需要,我们的DAO在访问sessionFactory的时候都不得不在多个数据源中不断切换,问题就出现了:如何让sessionFactory在执行数据持久化的时候,根据客户的需求能够动态切换不同的数据源?我们能不能在spring的框架下通过少量修改得到解决?是否有什么设计模式可以利用呢? 
首先想到在spring的applicationContext中配置所有的dataSource。这些dataSource可能是各种不同类型的,比如不同的数据库:Oracle、SQL Server、MySQL等,也可能是不同的数据源:比如apache 提供的org.apache.commons.dbcp.BasicDataSource、spring提供的org.springframework.jndi.JndiObjectFactoryBean等。然后sessionFactory根据客户的每次请求,将dataSource属性设置成不同的数据源,以到达切换数据源的目的。
spring中用到的包装器模式在类名上有两种表现:一种是类名中含有Wrapper,另一种是类名中含有Decorator。基本上都是动态地给一个对象添加一些额外的职责。 

6.代理

为其他对象提供一种以控制对这个对象的访问。在Aop实现中用到了JDK的动态代理;

7.观察者

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象得到通知并自动更新。

8.策略
第一个地方,加载资源文件的方式,使用了不同的方法,比如:ClassPathResourece,FileSystemResource,ServletContextResource,UrlResource但他们都有共同的借口Resource;第二个地方就是在Aop的实现中,采用了两种不同的方式,JDK动态代理和CGLIB代理;
9.模板
这个也很明显,在各种BeanFactory以及ApplicationContext实现中也都用到了;

http://www.lbrq.cn/news/1577845.html

相关文章:

  • 嘉兴做网站美工的工作/百度手游排行榜
  • WordPress知更鸟主题怎样安装/北京搜索引擎优化主管
  • php网站开发薪资/今日国内新闻大事件
  • 杭州网站建设图片/seoer是什么意思
  • 电商网站开发哪里好/常用的网络营销方式
  • 做质粒图谱的网站/如何做市场调研和分析
  • 上海搬家公司电话附近/免费seo排名优化
  • 个人网页设计与实现的题目来源/厦门seo计费
  • 公司网站域名cn和com/百度论坛首页
  • 手机app网站建设/成都百度推广公司联系电话
  • 怎么做导航网站/舆情网站直接打开的软件
  • 主播做的头像在哪个网站上做的/品牌网站设计
  • 做相册集什么网站/中国关键词
  • 上海外贸营销网站建设网站/百度信息
  • 用qt做网站可以吗/推广网站有效的方法
  • 电商网站开发设计/什么是竞价推广
  • 河北网站制作公司电话/企业管理软件
  • 购物网站开发背景需求/网络营销的内涵
  • 在工商局网站做年报要交费吗/百度广告上的商家可靠吗
  • wordpress分类自定义文字/济南seo网站排名优化工具
  • mini主机做网站服务器/网络推广外包注意哪些
  • 东莞微信网站建设报价/免费自己制作网站
  • 巨野做网站的/优化推广网站排名
  • 安徽做网站电话/湖南企业竞价优化首选
  • 怎么做网站10步骤/新产品推广方案范文
  • 贵州网站制作设计公司哪家好/网站排名优化制作
  • 网站代码 商品添加分类/竞价排名的定义
  • 百度做网站引流/淘宝指数
  • 电子商务网站建设实验报告/樱桃bt磁力天堂
  • python怎么做抢课网站/营销网络营销
  • docker-compose搭建 redis 集群
  • 石英加速度计如何实现高精度测量?
  • Kafka的一条消息的写入和读取过程原理介绍
  • Flutter学习笔记(六)---状态管理、事件、路由、动画
  • 嵌入式学习的第四十八天-中断+OCP原则
  • 在Mac 上生成GitLab 的SSH 密钥并将其添加到GitLab