Spring 4.0 学习日记(6) ---静态代理
来源:互联网 发布:如何学好高中政治知乎 编辑:程序博客网 时间:2024/05/22 08:07
写在前面 AOP
AOP:Aspect Oriented Programming 面向切面编程, 实现的是核心业务和非核心业务之间的分离,让核心类只做核心业务,代理类只做非核心业务。
目的:把核心业务和非核心业务进行分离.并把多个非核心业务处理(点)变成一个切面(之前的非核心业务代码需要写多次变成只需要写一次。)
静态代理
- 需要知道核心类(被代理类)是哪一个类,并且有什么方法。
- 非核心的代码需要重复写多次,显得代码的结构臃肿,形成代码冗余。
- 非核心类(代理类)需要实现核心类(被代理类)实现的接口,也就是他们需要实现共同的接口,但是以核心类实现的接口(被代理类)为准。
静态代理实例
package com.wow.StaticProxyTest;public interface GothamCityInfo { public void theProtectorInfo(String name); public void thePoliceInfo(String name); public void theJohnDoeInfo(String name);}
package com.wow.StaticProxyTest;public class JokerInfo implements GothamCityInfo{ @Override public void theProtectorInfo(String name) { System.out.println("小丑和"+name+"又在调皮捣蛋了......"); } @Override public void thePoliceInfo(String name) { System.out.println("小丑和"+name+"又去警察局卖香蕉了......"); } @Override public void theJohnDoeInfo(String name) { System.out.println("小丑和"+name+"打赌戈登知道蝙蝠侠是谁......"); }}
package com.wow.StaticProxyTest;public class DarkKnightInfo implements GothamCityInfo { private JokerInfo joker ; public DarkKnightInfo(){} public DarkKnightInfo(JokerInfo joker){ super(); this.joker = joker; } public void setJoker(JokerInfo joker) { this.joker = joker; } @Override public void theProtectorInfo(String name) { System.out.println("蝙蝠侠:超人不让我起床"); System.out.println("蝙蝠侠:蝙蝠车今天没加油"); System.out.println("蝙蝠侠:卧槽 猫女来查岗了"); System.out.println("蝙蝠侠:媳妇我错了...."); System.out.println("-----------------"); joker.theProtectorInfo(name); System.out.println("-----------------"); } @Override public void thePoliceInfo(String name) { System.out.println("蝙蝠侠:蜘蛛侠不让我起床"); System.out.println("蝙蝠侠:蜘蛛车今天没加油"); System.out.println("蝙蝠侠:卧槽 猫女来查岗了"); System.out.println("蝙蝠侠:媳妇我错了...."); System.out.println("-----------------"); joker.thePoliceInfo(name); System.out.println("-----------------"); } @Override public void theJohnDoeInfo(String name) { System.out.println("蝙蝠侠:钢铁侠不让我起床"); System.out.println("蝙蝠侠:钢铁侠今天没加油"); System.out.println("蝙蝠侠:卧槽 猫女来查岗了"); System.out.println("蝙蝠侠:媳妇我错了...."); System.out.println("-----------------"); joker.theJohnDoeInfo(name); System.out.println("-----------------"); }}
package com.wow.StaticProxyTest;public class InfoTest { public static void main(String[] args) { DarkKnightInfo dark = new DarkKnightInfo(new JokerInfo()); dark.theJohnDoeInfo("哈莉"); dark.thePoliceInfo("哈莉"); dark.theProtectorInfo("哈莉"); }}
打印结果
蝙蝠侠:钢铁侠不让我起床蝙蝠侠:钢铁侠今天没加油蝙蝠侠:卧槽 猫女来查岗了蝙蝠侠:媳妇我错了....-----------------小丑和哈莉打赌戈登知道蝙蝠侠是谁......-----------------蝙蝠侠:蜘蛛侠不让我起床蝙蝠侠:蜘蛛车今天没加油蝙蝠侠:卧槽 猫女来查岗了蝙蝠侠:媳妇我错了....-----------------小丑和哈莉又去警察局卖香蕉了......-----------------蝙蝠侠:超人不让我起床蝙蝠侠:蝙蝠车今天没加油蝙蝠侠:卧槽 猫女来查岗了蝙蝠侠:媳妇我错了....-----------------小丑和哈莉又在调皮捣蛋了......-----------------
其实 静态代理在某种程度上重复了很多动作 如果需要的业务的多了起来 那么代理的量是恐怖的 而且一旦某一部分需要改动 那么改动的觉得绝对是疯狂的所以 动态代理很好的解决了这个问题 也是AOP主要核心之一。
阅读全文
0 0
- Spring 4.0 学习日记(6) ---静态代理
- Spring 4.0 学习日记(7) ---动态代理
- Spring学习笔记(12)----静态代理模式分析演示
- Spring(AOP静态代理)
- Spring AOP 学习之静态代理
- spring aop学习5:jdk静态代理
- spring框架学习(八)—静态代理、JDK与CGLIB动态代理、AOP+IoC
- Spring学习总结(二)——静态代理、JDK与CGLIB动态代理、AOP+IoC
- Spring学习总结(二)——静态代理、JDK与CGLIB动态代理、AOP+IoC
- web学习笔记19-静态代理,动态代理,spring AOP
- Spring的代理模式(静态代理和动态代理)
- Spring的代理模式(静态代理和动态代理)
- 学习日记-代理模式
- Spring 4.0 学习日记(3)--- Spring依赖注入方式
- Spring 学习日记——访问静态资源
- spring学习日记(day1)
- 【spring】静态代理&&动态代理
- spring静态代理 动态代理
- SurfaceView 闪屏 黑线问题解决
- Sting、StringBuffer和StringBuilder的区别
- 【bzoj2430】 [Poi2003]Chocolate
- web.xml文件详解
- 批量操作资源或控件
- Spring 4.0 学习日记(6) ---静态代理
- server.xml文件详解
- The Little Girl who Picks Mushrooms HDU
- 十分钟掌握pandas(pandas官方文档翻译)
- linux 开发调试辅助工具
- 基于Random类和ArrayList类实现斗地主发牌功能
- spring学习笔记3--AOP
- javascript中new的用法
- 【bzoj3728】 PA2014Final Zarowki