增強一個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();
}
}