設計模式練習(11)——代理模式

代理模式

一、題目:

在某應用軟件中,需要記錄業務方法的調用日期,在不修改現有業務類的基礎上,爲每一個類提供一個日記記錄代理類,在代理類中輸出日誌,如在業務方法Mehtod()的調用之前,輸出“Method方法被調用,調用時間2016.11.18 11:11:11”,調用之後沒有拋出異常則輸出“Mehtod方法調用成功”,否則輸出“Mehtod方法調用失敗”,在代理類中調用真實業務類的業務方法,使用代理模式設計日誌記錄模塊的結構,繪製類圖並編程模擬實現。
(1)實現給出代理模式結構視圖。
(2)給出該實例類圖及代碼實現。

二、所用模式結構視圖:

這裏寫圖片描述

三、實例類圖:

這裏寫圖片描述

四、實例實現代碼:

(因爲區分,所以在類的前面加了Gj19)

Service類:抽象服務類
**package ProxyPattern;
/**
* Service類:抽象服務類
* @author gong
*
*/
public interface Gj19Service {
void method();
}**

RealService:具體服務類

package ProxyPattern;
/**
 * RealService:具體服務類
 * @author gong
 */
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

public class Gj19RealService implements Gj19Service {

    @Override
    public void method() {
        try {
            Date date = new Date();
            //format對象是用來以指定的時間格式格式化時間的
            SimpleDateFormat from = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

            //format()方法是用來格式化時間的方法
            String times = from.format(date);
            System.out.println("方法method()被調用,調用時間爲:" + times);
             //用來產生除零異常來模擬method方法調用是否成功 
            Random random = new Random();
            int a = random.nextInt(100);
            int b = random.nextInt(10);
            int c=a/b;
            System.out.println("方法method()調用成功");
        } catch (Exception e) {
            System.out.println("方法method()調用失敗");
        }


    }

}

Proxy類:代理服務類

package ProxyPattern;
/**
 * Proxy類:代理服務類
 * @author gong
 *
 */
public class Gj19Proxy implements Gj19Service{

    private Gj19RealService service = new Gj19RealService();
    @Override
    public void method() {
        service.method();
    }

}

代理模式客戶端測試類

package ProxyPattern;
/**
 * 代理模式客戶端測試類
 * @author gong
 *
 */
public class Gj19Client {
    public static void main(String[] args) {
        Gj19Service service;
        service = new Gj19Proxy();
        service.method();
    }

}

五、運行結果:

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章