java设计模式(十二):代理模式(静态代理)

基本介绍

实现思路

代码如下

Client

package staticproxy;

public class Client {
    public static void main(String[] args) {
        TeacherDaoProxy teacherDaoProxy = new TeacherDaoProxy(new TeacherDao());
        teacherDaoProxy.teacher();
    }
}

ITeacherDao

package staticproxy;

public interface ITeacherDao {
    void teacher();
}

TeacherDao

package staticproxy;

public class TeacherDao implements ITeacherDao {
    @Override
    public void teacher() {
        System.out.println("老师讲课了");
    }
}

TeacherDaoProxy

package staticproxy;

public class TeacherDaoProxy implements ITeacherDao {
    private ITeacherDao iTeacherDao;

    public TeacherDaoProxy(ITeacherDao iTeacherDao) {
        this.iTeacherDao = iTeacherDao;
    }

    @Override
    public void teacher() {
        System.out.println("开始代理。。。。。");
        iTeacherDao.teacher();
        System.out.println("代理结束。。。。。");
    }
}

优点:这样写可以在不修改被代理对象的前提上,在调用TeacherDao的前后做一些事情,达到了功能增强的目的。据网友交代spring的AOP就是用的代理模式的原理。

缺点:因为代理类和被代理类都需要实现同一个接口,会造成很多的代理类。如果增加接口的方法,代理和被代理类都需要维护。

猜你喜欢

转载自blog.csdn.net/qq_39046786/article/details/113871057
今日推荐