1个回答
展开全部
1.代理模式
代理方式的包含JDK代理和CGLIB代理:JDK只能代理接口,无法代理类。CGLIB都可以代理,且首次代理类或接口会生成代理类的字节码,并尽可能的重复使用该字节码,因而效率更高。
传统java代理的实现:
代理的实现包含:静态代理和动态代理两种形式。
静态代理:
一个接口
一个实现类
一个代理类实现接口:将接口构造注入为私有属性
方法主函数:通过实现类对象做参数初始化代理类,用接口对象接收。并调用代理类中重写的接口方法,间接调用实现类总的重写方法。
此方法得本质:IOC,多态。
缺点:代理类与接口耦合度过高,实用性不大
代码实现参考JAVA基础专题的代理笔记。
动态代理:
一个接口
一个是实现类
一个代理类实现了InvocationHandler
自定义了如下方法:用于实现通过实现类获得接口的引用
private Object implClass ;
public Object bind(Object implClass) {
this.implClass = implClass;
return Proxy.newProxyInstance(implClass.getClass().getClassLoader(),
implClass.getClass().getInterfaces(), this);
}
面向切面的代理:
一个普通类
一个切面类MessageDecorator implements MethodInterceptor
一个主函数类:
//目标
MessageWriter target = new MessageWriter();
//create the proxy
ProxyFactory proxyFactory = new ProxyFactory();
MessageDecorator decorator= new MessageDecorator();
try{
proxyFactory.addAdvice(decorator);
} catch(Exception a){
a.printStackTrace();
}
proxyFactory.setTarget(target);
//获取返回被代理的目标
MessageWriter proxy = (MessageWriter) proxyFactory.getProxy();
proxy.setSs( "熊大");
target.writeMessage();
System. out.println("---" );
proxy.writeMessage();
2.单例模式
public class Single{
private static final Single single = new Single();
private Single(){};
public synchronized static Single getInstance(){
return this.single;
}
}
3.
代理方式的包含JDK代理和CGLIB代理:JDK只能代理接口,无法代理类。CGLIB都可以代理,且首次代理类或接口会生成代理类的字节码,并尽可能的重复使用该字节码,因而效率更高。
传统java代理的实现:
代理的实现包含:静态代理和动态代理两种形式。
静态代理:
一个接口
一个实现类
一个代理类实现接口:将接口构造注入为私有属性
方法主函数:通过实现类对象做参数初始化代理类,用接口对象接收。并调用代理类中重写的接口方法,间接调用实现类总的重写方法。
此方法得本质:IOC,多态。
缺点:代理类与接口耦合度过高,实用性不大
代码实现参考JAVA基础专题的代理笔记。
动态代理:
一个接口
一个是实现类
一个代理类实现了InvocationHandler
自定义了如下方法:用于实现通过实现类获得接口的引用
private Object implClass ;
public Object bind(Object implClass) {
this.implClass = implClass;
return Proxy.newProxyInstance(implClass.getClass().getClassLoader(),
implClass.getClass().getInterfaces(), this);
}
面向切面的代理:
一个普通类
一个切面类MessageDecorator implements MethodInterceptor
一个主函数类:
//目标
MessageWriter target = new MessageWriter();
//create the proxy
ProxyFactory proxyFactory = new ProxyFactory();
MessageDecorator decorator= new MessageDecorator();
try{
proxyFactory.addAdvice(decorator);
} catch(Exception a){
a.printStackTrace();
}
proxyFactory.setTarget(target);
//获取返回被代理的目标
MessageWriter proxy = (MessageWriter) proxyFactory.getProxy();
proxy.setSs( "熊大");
target.writeMessage();
System. out.println("---" );
proxy.writeMessage();
2.单例模式
public class Single{
private static final Single single = new Single();
private Single(){};
public synchronized static Single getInstance(){
return this.single;
}
}
3.
追问
求现成的小程序啊
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
单片机课程设计是针对《单片机原理及应用技术》课程的一项重要的动手实践活动。该课程设计的目标是让学生通过实际项目的开发,掌握单片机的开发技能,提高解决实际问题的能力,并且加深对单片机原理及应用技术的理解。课程设计的内容包括项目概述、项目要求、...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询