經過面向接口編程實現日誌輸出

實現思路:apache

(1)首先把訂票程序中的 doBook()方法提出來成爲接口;編程

package com.gc.impl;eclipse

public interface FlyBookInterface {
    public void doBook(String name);
}ide

(2)而後經過一個實體類來實現這個接口中的方法,在這個方法中實現具體訂票相關的業務邏輯測試

package com.gc.action;this

import com.gc.impl.FlyBookInterface;代理

public class FlyBook implements FlyBookInterface{日誌

    @Override
    public void doBook(String name) {
        // 訂票相關的具體業務代碼
    }接口

}
 ip

(3)接着經過一個代理類來進行日誌輸出

package com.gc.action;

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.eclipse.jdt.internal.compiler.ast.ThisReference;

import com.gc.impl.FlyBookInterface;

public class FlyBookProxy implements FlyBookInterface{
    private Logger logger = Logger.getLogger(this.getClass().getName());
    private FlyBookInterface flyBookInterface;
    //在該類中針對前面的接口 FlyBookInterface 編程,而不是具體的類
    public FlyBookProxy(FlyBookInterface flyBookInterface){
        this.flyBookInterface = flyBookInterface;
    }
    @Override
    public void doBook(String name) {
        logger.log(Level.INFO, name + " 開始訂票");
        flyBookInterface.doBook(name);
        logger.log(Level.INFO, name + " 訂票結束");
    }

}
 

(4)最後編寫測試程序

package com.gc.action;

public class TestFlyBook {
    public static void main(String[] args) {
        FlyBookProxy flyBookProxy = new FlyBookProxy(new FlyBook());
        flyBookProxy.doBook("卡哇伊");
    }
}
 

運行結果:

[INFO ] 2017-01-03 11:08:35 com.gc.action.FlyBookProxy-卡哇伊 開始訂票 [INFO ] 2017-01-03 11:08:35 com.gc.action.FlyBookProxy-卡哇伊 訂票結束

相關文章
相關標籤/搜索