设计模式练习(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();
    }

}

五、运行结果:

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值