2021-01-20 20:12发布
传统开发方式:UserService us=new UserServiceImpl();us.say();
UserService us=new UserServiceImpl();
us.say();
OCP原则:
open-程序具有扩展性;close-程序的修改尽量减少关闭;
Spring IOC实现思路:
//创建一个工厂类,通过工厂类创建UserService接口的实现类UserServiceImpl对象,这样减少接口和实现类的耦合性。//工厂+反射+配置文件(bean)
//创建一个工厂类,通过工厂类创建UserService接口的实现类UserServiceImpl对象,这样减少接口和实现类的耦合性。
//工厂+反射+配置文件(bean)
class Factory{
` public static UserService getObject(){` ` return new UserServiceImpl();` ` }`
}UserService userService=Factory.getObject();userService.say();
}
UserService userService=Factory.getObject();
userService.say();
在Application.xml中
` `
IOC(控制反转),将原来在程序中手动创建对象UserService对象的控制权,交由Spring框架管理。简单的说,就是创建UserService对象的控制权被反转到Spring框架啦DI(依赖注入),就是在Spring创建这个对象的过程中,将这个对象所依赖的属性注入进去。
比如定义一个接口的实现类:UserService us = new UserService();该方式没有体现面向接口编程的思想。
UserService us = new UserServiceImpl();在web层中创建service层(业务层)的实现类,使得web层与service层产生了耦合;并没有遵守ocp原则
即open-close原则:对程序的扩展是open的,对修改程序代码是close的。尽量做到不修改程序的源码,实现对程序的扩展。
创建一个工厂类,通过工厂类来创建service接口的实现对象。
但是如果实现类发现变化,还是需要修改FactoryBean类中的代码,由此可见还是存在耦合,该方案仍然存在不足;
(1)先在配置文件中配置一个bean,如
(2)通过向工厂类方法中传入id值,解析XML文件,通过id找到对应的bean
再通过class名,利用Java的反射机制生成对应的class类,从而完成解耦。
log方法的参数有问题?
1、相同点(1)都是表现层框架,都是基于MVC设计模型(2)底层都离不开 Servlet API(3)处理请求的机制都是一个核心控制器2、不同点(1)SpringMVC的入口是Servlet,而Struts2的入口是Filter(2)SpringMVC是基于方法设计的,而Struts2是基于类(3)SpringMV...
有五种自动装配的方式,可以用来指导 Spring 容器用自动装配方式来进行依赖注入。no:默认的方式是不进行自动装配,通过显式设置 ref 属性来进行装配。第 402 页 共 485 页byName:通过参数名 自动装配,Spring 容器在配置文件中发现 bean的 autowire 属性被...
是一样的,new的方式也可以,但是这样做就是控制连接资源分配了,要么比较占内存,大量访问的时候让服务器负载过大
1.单例顾名思义:一个个排队过... 高访问量的时候,你能想象服务器的压力了... 而且用户体验也不怎么好,等待太久~2.实质上这种理解是错误的,Java里有个API叫做ThreadLocal,spring单例模式下用它来切换不同线程之间的参数。用ThreadLocal是为了保证线程安全...
不要死记硬背,理解每一个含义,代表啥意思,就行了,现在流行的springboot是零配置的,开箱即用
Spring是一个非常活跃的开源框架;它是一个基于IOC和AOP来构架多层JavaEE系统的框架,它的主要目地是简化企业开发.Spring以一种非侵入式的方式来管理你的代码,Spring提倡最少侵入,这也就意味着你可以适当的时候安装或卸载Spring.优势:1.方便解耦,简化开发...
轻量:Spring 是轻量的,基本的版本大约2MB。控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。容器:Spring 包含并...
最多设置5个标签!
传统开发方式:
UserService us=new UserServiceImpl();
us.say();
OCP原则:
Spring IOC实现思路:
//创建一个工厂类,通过工厂类创建UserService接口的实现类UserServiceImpl对象,这样减少接口和实现类的耦合性。
//工厂+反射+配置文件(bean)
class Factory{
}
UserService userService=Factory.getObject();
userService.say();
在Application.xml中
IOC(控制反转),将原来在程序中手动创建对象UserService对象的控制权,交由Spring框架管理。
简单的说,就是创建UserService对象的控制权被反转到Spring框架啦
DI(依赖注入),就是在Spring创建这个对象的过程中,将这个对象所依赖的属性注入进去。
一、传统方式的开放
比如定义一个接口的实现类:
UserService us = new UserService();
该方式没有体现面向接口编程的思想。
二、面向接口编程
UserService us = new UserServiceImpl();
在web层中创建service层(业务层)的实现类,使得web层与service层产生了耦合;
并没有遵守ocp原则
OCP原则
即open-close原则:对程序的扩展是open的,对修改程序代码是close的。
尽量做到不修改程序的源码,实现对程序的扩展。
三、工厂模式
创建一个工厂类,通过工厂类来创建service接口的实现对象。
但是如果实现类发现变化,还是需要修改FactoryBean类中的代码,由此可见还是存在耦合,该方案仍然存在不足;
四、工厂+反射+配置文件
(1)先在配置文件中配置一个bean,如
(2)通过向工厂类方法中传入id值,解析XML文件,通过id找到对应的bean
再通过class名,利用Java的反射机制生成对应的class类,从而完成解耦。
相关问题推荐
log方法的参数有问题?
1、相同点(1)都是表现层框架,都是基于MVC设计模型(2)底层都离不开 Servlet API(3)处理请求的机制都是一个核心控制器2、不同点(1)SpringMVC的入口是Servlet,而Struts2的入口是Filter(2)SpringMVC是基于方法设计的,而Struts2是基于类(3)SpringMV...
有五种自动装配的方式,可以用来指导 Spring 容器用自动装配方式来进行依赖注入。no:默认的方式是不进行自动装配,通过显式设置 ref 属性来进行装配。第 402 页 共 485 页byName:通过参数名 自动装配,Spring 容器在配置文件中发现 bean的 autowire 属性被...
是一样的,new的方式也可以,但是这样做就是控制连接资源分配了,要么比较占内存,大量访问的时候让服务器负载过大
1.单例顾名思义:一个个排队过... 高访问量的时候,你能想象服务器的压力了... 而且用户体验也不怎么好,等待太久~2.实质上这种理解是错误的,Java里有个API叫做ThreadLocal,spring单例模式下用它来切换不同线程之间的参数。用ThreadLocal是为了保证线程安全...
不要死记硬背,理解每一个含义,代表啥意思,就行了,现在流行的springboot是零配置的,开箱即用
Spring是一个非常活跃的开源框架;它是一个基于IOC和AOP来构架多层JavaEE系统的框架,它的主要目地是简化企业开发.Spring以一种非侵入式的方式来管理你的代码,Spring提倡最少侵入,这也就意味着你可以适当的时候安装或卸载Spring.优势:1.方便解耦,简化开发...
轻量:Spring 是轻量的,基本的版本大约2MB。控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。容器:Spring 包含并...