• 周六. 4月 27th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

Java中的方法增强

admin

11月 28, 2021

A:在不影响业务情况下,增强一个方法有几种方法呢?

B:3种!

A:哪三种呀?

一、继承类来重写方法;

  1、要可以获取这个类的构造;

class Man{
public void run(){
    System.out.println("跑....");
    }
}

class SuperMan extends Man{
public void run(){
     super.run();
    System.out.println("飞....");
    }
}

二、装饰者模式

  1、包装类要和被包装类实现同一接口;

  2、包装类要获取被包装类的引用;

  

public interface Tenant {
    void rent();
}
public class People implements Tenant {
    public void rent() {
        System.out.println("支付租金");
    }
}
public class PeopleProxy implements Tenant {//实现统一接口
    private People p;

    public PeopleProxy(People p){//获取被包装类的引用
        this.p = p;
    }

    public void rent() {
        System.out.println("我是中介我要先收中介费");
        p.rent();
    }
}

三、动态代理

  1、被增强的对象实现接口即可;

public class ActiveProxy implements InvocationHandler {
    private Object o;

    public ActiveProxy(Object o){
        this.o = o;
    }


    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        Object invoke = method.invoke(this.o, args);
        return invoke;
    }
}
public class Run {
    public static void main(String[] args) {
        //获得要增强实现类的对象
        Tenant p = new People();
        //类加载器
        ClassLoader c = p.getClass().getClassLoader();
        //产生的代理对象的引用
        ActiveProxy handler = new ActiveProxy(p);

        Tenant app = (Tenant) Proxy.newProxyInstance(c,new Class[]{Tenant.class},handler);
        app.rent();
    }
}

《Java中的方法增强》有一个想法
  1. Wow, wonderful weblog format! How long have you been blogging for?

    you make blogging glance easy. The whole look of your site is excellent, as well
    as the content material! You can see similar here najlepszy sklep

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注