• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

设计模式之静态代理模式实战

技术杂谈 勤劳的小蚂蚁 2个月前 (02-10) 68次浏览 已收录 0个评论 扫描二维码

静态代理模式很简单,代理类和实现类都实现相同的接口,然后通过代理类来调用实现类的方法。

如我们想保存用户信息之前打印用户信息,或者保存用户信息之后把这些信息缓存下来,即在运行方法前后插入执行一个别的操作,下面是一个简单的示例。

用户接口
public interface UserInterface {
    boolean saveUser(User user);
}

用户接口实现
public class UserInterfaceImpl implements UserInterface {
    @Override
    public boolean saveUser(User user) {
        System.out.println(“保存用户: ” + user.getName());
        return true;
    }
}

public class Test {

    public static void main(String[] args) {
        testStaticProxy();
    }

    private static void testStaticProxy() {
        User user = new User();
        user.setName(“tom”);
        new StaticProxy(new UserInterfaceImpl()).saveUser(user);
    }

    static class StaticProxy implements UserInterface {

        private UserInterface userInterface;
        public StaticProxy(UserInterface userInterface) {
            this.userInterface = userInterface;
        }

        @Override
        public boolean saveUser(User user) {
            System.out.println(“静态代理-开始保存用户”);
            boolean result = userInterface.saveUser(user);
            System.out.println(“静态代理-保存用户结果: ” + result);
            System.out.println();
            return result;
        }
    }
}

结果输出:

静态代理-开始保存用户
保存用户: tom
静态代理-保存用户结果: true

通过代码实战的方法学习设计模式,是不是觉得静态代理很简单了?

下面问题来了,如果我们想把用户接口内所有的方法都要代理,那我们所有的方法都要代理一遍,又或者之后又添加了新的方法,那又得重新写代理,十分麻烦,明天分享下动态代理的实现,解决了静态代理的不便扩展性。


丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:设计模式之静态代理模式实战
喜欢 (0)
[247507792@qq.com]
分享 (0)
勤劳的小蚂蚁
关于作者:
温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00