增强一个java类中的某个方法的几种方式有:①继承的方式②装饰者模式方式③动态代理的方式;本文着重介绍前两种,动态代理另外用一篇来讲解.
继承
用这种方式来增强类中的某个方法的时候必须要能够获取得到这个类.也就是说你能继承得到这个类.
下面我们用代码演示下:
public class Animal {
public void eat(){
System.out.println("吃东西");
}
}
public class Cat extends Animal{
//增强Animal类中的eat方法
public void eat(){
System.out.println("猫吃鱼");
}
}
装饰者模式
使用装饰者模式增强一个类 需要和被增强的类实现同一个接口, 而且包装的对象中要能获得到被包装对象的引用 .他的缺点就是,如果需要实现的接口方法特别多,接口的方法其他方法也需要一一实现.
下面用代码演示下:
/**
*定义一个接口
*/
interface Waiter{
public void server();
}
/**
*定义被增强的类
*/
class Waiteress implements Waiter{
//需要被增强的方法
@Override
public void server() {
System.out.println("服务...");
}
}
/**
*定义增强的类
*/
class WaiteressWrapper implements Waiter{
private Waiter waiter;
//获取到需要被增强的类的对象的引用
public WaiteressWrapper(Waiter waiter) {
this.waiter = waiter;
}
//对方法进行增强
@Override
public void server() {
System.out.println("微笑...");
this.waiter.server();
}
}