改写类中方法--动态代理,装饰,继承
来源:互联网 发布:金薇内衣淘宝是真的吗 编辑:程序博客网 时间:2024/06/07 04:51
interface Animal{
public void eat();
public void bargin();
}
public class Dog implements Animal{
public void eat(){
System.out.println("原狗在吃香香");
}
public void bargin(){
System.out.println("原狗在叫");
}
public static void main(String[] args) {
//原类中狗的吃和叫方法
final Dog dog = new Dog(); //这里会被后面的动态代理的内部类调用,所以需要用final来修饰
dog.eat();
dog.bargin();
//继承类中狗的吃和叫方法
Dog dog2 = new NewDog();
dog2.eat();
dog2.bargin();
//装饰类中狗的吃和叫的方法
Dog dog3 = new Dog();
Animal ani = new 装饰狗(dog);
ani.eat();
ani.bargin();
//动态代理
Dog dog4 = new Dog();
Animal proxy = (Animal) Proxy.newProxyInstance(Dog.class.getClassLoader(),Dog.class.getInterfaces(),new InvocationHandler(){
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
if("bargin".equals(method.getName())){
System.out.println("代理狗在叫");
return null;
}else{
return method.invoke(dog, args);
}
}
});
proxy.eat();
proxy.bargin();
}
}
//动态代理
//装饰
class 装饰狗 implements Animal{
private Animal ani = null;
public 装饰狗(Animal ani){
this.ani = ani;
}
public void bargin() {
System.out.println("装饰狗在叫");
}
public void eat() {
ani.eat();
}
}
//继承来重写方法
class NewDog extends Dog{
@Override
public void bargin() {
System.out.println("继承狗在叫");
}
}
0 0
- 改写类中方法--动态代理,装饰,继承
- 装饰者模式.继承.动态代理
- 增强 修改对象的集中方法(继承、装饰者模式、动态代理)
- 扩展类的三种方式(继承,装饰模式,动态代理)
- 继承,装饰者模式和动态代理之间的区别
- 动态代理与装饰模式
- 装饰者模式,静态代理,动态代理
- Java中动态生成代理的方法
- 装饰者模式与继承增强类方法
- 初识继承、 组合、动态代理
- 改写maximo中dialog 类
- 改写方法
- 动态代理-增强方法
- 设计模式之代理模式,装饰模式和继承
- 基础加强:类加载器 ---注解 ---动态代理(装饰设计模式)
- 利用动态代理+注解 实现子线程中执行方法
- Java动态代理以及InvocationHandler中invoke()方法笔记
- Java中动态代理
- crontab 不同系统下的使用
- jasperReport5.6.0生成PDF(一)
- C语言判断某个年份是否是闰年
- Activity生命周期
- python学习一
- 改写类中方法--动态代理,装饰,继承
- storm-0.9.5单机配置
- Java字符串工具类
- LeetCode-Longest Substring Without Repeating Characters
- 欢迎使用CSDN-markdown编辑器
- Android各种屏幕分辨率(VGA、HVGA、QVGA、WQVGA、WVGA、FWVGA) 详解
- Oracle 11gR2重建用户及其所有表
- Android uevent进程源码分析
- 单例模式的好文章