前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式之静态代理模式实战

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

作者头像
Java技术栈
发布2018-03-29 17:42:51
5080
发布2018-03-29 17:42:51
举报
文章被收录于专栏:Java技术栈Java技术栈

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

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

用户接口

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档