代理模式简单举例

介绍一下,代理模式。

其实代理模式是我们最常用的,在任何框架中几乎都离不开代理模式的应用。

话不多说,直接上一个代码理解一下。

定义一个controller层。

java 复制代码
    private final CacheUserServiceImpl cacheUserService;
    
    /**
     * 代理模式
     * @return
     */
    @GetMapping("/proxyMode")
    public ResponseResult proxyMode(){
        // 使用你代理客户端
        ResponseResult currentUserInfo = cacheUserService.getCurrentUserInfo();
        return currentUserInfo;
    }	

定义一个serviceimpl实现userService接口。

java 复制代码
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class CacheUserServiceImpl implements UserService {
    private RedisService  redisService;
    private UserServiceImpl  userService;
	
	@Override
    public ResponseResult getCurrentUserInfo() {
        Object o = redisService.getRedisTemplate().opsForValue().get("userKey");
        //  先查缓存,查不到,在查user数据库接口。
        if (o != null){
            return ResponseResult.success(o);
        }else {
            ResponseResult currentUserInfo = userService.getCurrentUserInfo();
            return currentUserInfo;
        }
    }
}

看一下原本的userService的 实现类

java 复制代码
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    @Override
    public ResponseResult getCurrentUserInfo() {
        return ResponseResult.success("获取当前登录用户信息成功", baseMapper.getById(StpUtil.getLoginIdAsString()));
    }
}

这样我们就实现了一个最简单的代理。

我们现在只需要直接调用代理类:CacheUserServiceImpl。就可以实现userService的所有功能。

一般来说我们基于上面的思想,再结合 AOP 机制 和 自定义注解,再完善完善,其实你就实现了大名鼎鼎的springCache功能了。 哈哈哈😀😀😀

转自我的博客:http://he-bi.cn/#/article/214

相关推荐
Buring_learn10 小时前
代理模式 -- 学习笔记
笔记·学习·代理模式
w(゚Д゚)w吓洗宝宝了5 天前
代理模式 - 代理模式的应用
c++·代理模式
web2u9 天前
Cloudflare通过代理服务器绕过 CORS 限制:原理、实现场景解析
javascript·安全·前端框架·node.js·代理模式·proxy模式
晚秋贰拾伍11 天前
设计模式的艺术-代理模式
运维·安全·设计模式·系统安全·代理模式·运维开发·开闭原则
angen201815 天前
二十三种设计模式-代理模式
设计模式·代理模式
运筹帷幄小红花16 天前
代理模式实现
代理模式
蜡笔小新DD16 天前
Jmeter配置服务代理器 Proxy(二)
jmeter·代理模式
张慕白Ai18 天前
【VS 调试WebApi —— localhost 及 ip访问】
服务器·tcp/ip·c#·asp.net·代理模式·visual studio
叫我龙翔19 天前
【算法日记】从零开始认识动态规划(一)
c++·算法·动态规划·代理模式
get_money_19 天前
动态规划汇总1
开发语言·数据结构·笔记·算法·leetcode·动态规划·代理模式