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

网站建设全国排名沈阳seo按天计费

网站建设全国排名,沈阳seo按天计费,兴安盟老区建设促进会网站,怎样换网站关键词1. 适配器模式的应用 1.1适配器模式#xff08;Adapter Pattern#xff09;的原始定义是#xff1a;将一个类的接口转换为客户期望的另一个接口#xff0c;适配器可以让不兼容的两个类一起协同工作。 1.2 AOP中的适配器模式 在Spring的AOP中#xff0c;使用Advice#…1. 适配器模式的应用 1.1适配器模式Adapter Pattern的原始定义是将一个类的接口转换为客户期望的另一个接口适配器可以让不兼容的两个类一起协同工作。 1.2 AOP中的适配器模式 在Spring的AOP中使用Advice通知来增强被代理类的功能。Advice的类型有BeforeAdvice、AfterReturningAdvice、ThrowsAdvice。每种Advice都有对应的拦截器如MethodBeforeAdviceInterceptor、AfterReturningAdviceInterceptor、ThrowsAdviceInterceptor。 1.3 代码示例 以下示例展示了如何使用适配器模式在Spring AOP中增强一个目标类的功能。 public interface MyService {void doSomething(); }public class MyServiceImpl implements MyService {Overridepublic void doSomething() {System.out.println(Doing something ...);} }// 使用Advice通知来增强被代理类的功能 public class MyBeforeAdvice implements MethodBeforeAdvice {// 在目标方法执行前进行拦截Overridepublic void before(Method method, Object[] objects, Object o) throws Throwable {System.out.println(我变强,也变秃了......);} }// 自定义适配器对象将BeforeAdvice对象适配为一个MethodBeforeAdviceInterceptor对象 public class MyBeforeAdviceAdapter extends MethodBeforeAdviceInterceptor {public MyBeforeAdviceAdapter(MethodBeforeAdvice advice) {super(advice);} }public class Test01 {public static void main(String[] args) {// 创建前置通知对象MyBeforeAdvice advice new MyBeforeAdvice();// 创建适配器对象,传入通知对象MyBeforeAdviceAdapter adapter new MyBeforeAdviceAdapter(advice);// 获取目标对象的代理工厂ProxyFactory factory new ProxyFactory(new MyServiceImpl());// 向代理对象中添加适配器对象factory.addAdvice(adapter);// 获取代理对象MyService proxy (MyService) factory.getProxy();// 调用代理方法proxy.doSomething();} }每个类对应适配器模式中的如下角色 TargetMyServiceImpl类是目标对象即需要被代理的对象。AdapterMyBeforeAdviceAdapter类是适配器对象它将 MyBeforeAdvice对象适配为一个 MethodBeforeAdviceInterceptor对象使得 MyBeforeAdvice可以被应用到目标对象的代理中。AdapteeMyBeforeAdvice类是被适配的对象它定义了一个前置通知方法在目标方法执行前进行拦截。ClientTest01类是客户端它通过创建适配器对象并将其添加到目标对象的代理中实现了在目标方法执行前应用 MyBeforeAdvice的前置通知。 2. 策略模式的应用 策略模式是一种行为设计模式它允许定义一系列算法将每个算法分别封装起来并使它们可以相互替换。这种模式使得算法可以在不影响客户端的情况下发生变化。在Spring框架中策略模式的应用十分广泛下面是Resource接口及其实现类的示例。 2.1 Resource 接口 Spring框架的资源访问Resource接口提供了强大的资源访问能力。Spring框架本身大量使用了Resource接口来访问底层资源。Resource接口本身没有提供访问任何底层资源的实现逻辑而是针对不同的底层资源提供了不同的Resource实现类这些实现类负责不同的资源访问逻辑。 Spring为Resource接口提供了如下实现类 UrlResource访问网络资源的实现类。ClassPathResource访问类加载路径里的资源的实现类。FileSystemResource访问文件系统里的资源的实现类。ServletContextResource访问相对于ServletContext路径里的资源的实现类。InputStreamResource访问输入流资源的实现类。ByteArrayResource访问字节数组资源的实现类。 这些Resource实现类针对不同的底层资源提供了相应的资源访问逻辑并提供便捷的包装以便客户端程序的资源访问。 public class ResourceTest {public static void main(String[] args) throws IOException {// 创建ClassPathResource对象Resource resource new ClassPathResource(application.properties);// 调用getInputStream()方法读取资源InputStream is resource.getInputStream();byte[] bytes new byte[1024];int n;while ((n is.read(bytes)) ! -1) {System.out.println(new String(bytes, 0, n));}is.close();} }2.2 DefaultResourceLoader ResourceLoader接口用于返回Resource对象其实现可以看作是一个生产Resource的工厂类。当创建Resource对象时Spring会根据传入的资源路径来选择相应的Resource实现类。这一过程是由Spring中的ResourceLoader接口及其实现类DefaultResourceLoader来完成的。 DefaultResourceLoader中的getResource方法会根据传入的资源路径选择相应的Resource实现类从而实现了策略模式的效果。 public Resource getResource(String location) {Assert.notNull(location, Location must not be null);// 遍历ProtocolResolver集合通过ProtocolResolver来解析资源路径for (ProtocolResolver protocolResolver : this.getProtocolResolvers()) {Resource resource protocolResolver.resolve(location, this);if (resource ! null) {return resource;}}// 没有找到对应的ProtocolResolver使用默认的处理方式if (location.startsWith(/)) {// 以斜杠开头的路径表示基于ServletContext的相对路径return this.getResourceByPath(location);} else if (location.startsWith(classpath:)) {// 以classpath:开头的路径表示在classpath下查找资源return new ClassPathResource(location.substring(classpath:.length()), this.getClassLoader());} else {try {// 尝试将路径解析为URL如果是文件URL则创建FileUrlResource否则创建UrlResourceURL url new URL(location);return (Resource) (ResourceUtils.isFileURL(url) ? new FileUrlResource(url) : new UrlResource(url));} catch (MalformedURLException var5) {// 如果路径无法解析为URL则当做相对路径来处理return this.getResourceByPath(location);}} }在上述代码中getResource方法根据传入的资源路径选择相应的Resource实现类从而实现了策略模式的效果。不同的实现类负责不同类型资源的访问逻辑使得Resource接口的使用更加灵活和便捷。
http://www.w-s-a.com/news/351435/

相关文章:

  • 成都公司网站设计无锡seo网站推广费用
  • 建网站平台要多少钱购物网站界面设计策划
  • 学完js了可以做哪些网站长沙建站官网
  • 怎么样做问卷网站多少钱英语
  • 房产网站建设方案建筑公司是干什么的
  • wordpress建的大型网站柳州市网站建设
  • 石家庄做网站的公司有哪些微信自媒体网站建设
  • 池州哪里有做网站注册公司有哪些风险
  • 做古代风格头像的网站对网站政务建设的建议
  • 网站搜索栏怎么做设计个网站要多少钱
  • 阿里巴巴网站建设目标wamp wordpress
  • 自己做的网站怎么挂网上金蝶erp
  • 网站的页面由什么组成淘宝网网站建设的需求分析
  • 软文网站推广法dede5.7内核qq个性门户网站源码
  • 个人备案网站名称校园网站建设特色
  • vr超市门户网站建设班级网站怎么做ppt模板
  • 网站建设一般是用哪个软件刚开始做写手上什么网站
  • 用jsp做的网站源代码下载有哪些做红色旅游景点的网站
  • 网站开发的技术选型黄石市网站建设
  • 做直播网站需要证书吗专做宝宝的用品网站
  • 网站标题用什么符号网站制作交易流程
  • dede模板网站教程jsp网站搭建
  • 上海网站开发外包公司鲜花导购网页制作
  • 宿州外贸网站建设公司个人注册网站一般做什么
  • 小公司做网站用哪种服务器什么是网站代理
  • 青岛李村网站设计公司cms建站平台
  • 做saas网站可行吗许昌抖音推广公司
  • 网站建设找谁做seo基础知识培训
  • 微网站怎么做的好建设网站不会写代码
  • 广州外贸网站制作wordpress信息搜索插件