13 | 实战二(上):如何对接口鉴权这样一个功能开发做面向对象分析?
王争
该思维导图由 AI 生成,仅供参考
面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP),是面向对象开发的三个主要环节。在前面的章节中,我对三者的讲解比较偏理论、偏概括性,目的是让你先有一个宏观的了解,知道什么是 OOA、OOD、OOP。不过,光知道“是什么”是不够的,我们更重要的还是要知道“如何做”,也就是,如何进行面向对象分析、设计与编程。
在过往的工作中,我发现,很多工程师,特别是初级工程师,本身没有太多的项目经验,或者参与的项目都是基于开发框架填写 CRUD 模板似的代码,导致分析、设计能力比较欠缺。当他们拿到一个比较笼统的开发需求的时候,往往不知道从何入手。
对于“如何做需求分析,如何做职责划分?需要定义哪些类?每个类应该具有哪些属性、方法?类与类之间该如何交互?如何组装类成一个可执行的程序?”等等诸多问题,都没有清晰的思路,更别提利用成熟的设计原则、思想或者设计模式,开发出具有高内聚低耦合、易扩展、易读等优秀特性的代码了。
所以,我打算用两节课的时间,结合一个真实的开发案例,从基础的需求分析、职责划分、类的定义、交互、组装运行讲起,将最基础的面向对象分析、设计、编程的套路给你讲清楚,为后面学习设计原则、设计模式打好基础。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了面向对象分析和设计的重要性,以及如何进行接口鉴权功能的面向对象分析思路。作者通过一个微服务接口鉴权功能的案例展示了需求分析的思考路径,并提出了四轮循序渐进的分析过程,从最简单的解决方案开始,逐步优化,最终形成可执行的需求列表。文章突出了面向对象分析的重要性,以及在实际开发中如何进行需求分析和迭代优化。在优化认证流程中,作者提出了引入随机变量来增加安全性,并讨论了存储AppID和密码的灵活性和扩展性。最终,文章强调了需求分析是一个不断迭代优化的过程,并强调了需求定义的重要性。读者可以从中学习到如何处理抽象、模糊的需求,以及如何进行迭代优化,产生清晰的、可落地的需求定义。整体而言,本文为读者提供了深入的技术思考和实践经验,对于面向对象分析和设计有着重要的指导意义。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《设计模式之美》,新⼈⾸单¥98
《设计模式之美》,新⼈⾸单¥98
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(168)
- 最新
- 精选
- qinsi光拼url是不够的,只能覆盖如HTTP GET一类参数在url中的请求,对于如POST和PUT一类的请求,因为参数通常在body中,就没有参与token的生成。又因为这样的方案存在允许重放请求的时间间隔,就可能导致的情况是中间人截获了请求,在允许重放的时间间隔内任意修改body中的参数后发送,让接口鉴权形同虚设
作者回复: 嗯嗯,说的有道理~
2019-12-0811103 - 不似旧日有个问题: 通过同样的 token 生成算法,在服务端生成新的 token,与调用方传递过来的 token 比对。这个做法是不是有点多余? 能把token解密难道不能说明token没有问题么?
作者回复: token是单向加密算法生成的 无法解密的
2019-12-0257 - 马超这个鉴权功能需求分析的很好,但是和面向对象分析没有多大关系吧。
作者回复: 我理解的面向对象分析,就是需求分析。
2019-12-046 - QQ怪老师,我们公司有个重构项目,也是要最客户端鉴权,但是旧客户端没有做token之类的鉴权传token,但现在要做,如何做到兼容旧客户端做鉴权呢?
作者回复: 后端可以对没有传递token的不做校验
2019-12-02105 - teddytyy老师,时间戳要不要拼接在url里产生token应该都可以吧?服务端反正是按照url里解析的时间戳去过滤的
作者回复: 放到里面的目的是让每次生成的token都不一样
2019-12-0224 - 杰洛特请问老师,token 在 client 端生成的话,是否意味着要告知 client 端加密算法?然后才能在 server 端解密到信息
作者回复: 是的 要统一加密算法
2019-12-0223 - lh配置过程: 服务器:留存RSA私钥,分配渠道标识(明文),渠道密码(密文) 客户端:持有RSA公钥,被分配渠道标识(明文),渠道密码(密文) 交互过程: 客户端:RSA公钥加密(业务参数+渠道密码+渠道标识+时间戳),时间戳 服务器: 1.判断时间戳是否在有效期内; 2.RSA公钥加密得到:业务参数+渠道密码+渠道标识+时间戳; 3.判断时间戳是否被修改; 4.判断渠道标识所对应的渠道密码是否正确; 不过,由于公钥加密,对于数据量较大时,性能较差,所以一般的做法是,客户端与服务器利用RSA协商一个对称密钥后,之后的请求都使用对称密钥进行加密通信。
作者回复: ������
2020-11-292 - xuanyuan不是应该先有调研过程吗?直接就开始设计的?
作者回复: 那估计还有会议讨论 立项之类的流程吧
2019-12-0422 - 圆圆我有一些疑问,即然是防止黑客攻击,那么着重点不应该放在加密算法上吗? 我们即使用了sha算法,但是明文还是明明白白的放着。黑客把几个变量试几次之后就知道我们是什么大概情况进行的加密。他自己就可以造参数进行模拟。 我觉得对黑客来说,即使最后一种也和第一种一样简单。 希望大佬帮忙解答下疑问,感谢~
作者回复: sha是单向加密算法 不知道是不是你误解了
2019-12-032 - Lyreclient端生成的token在时间窗口内,假如用户在操作中停留了1分钟(时间窗口),那token就过期了吗?
作者回复: 是要发送请求到服务器的时候才生成token
2019-12-0232
收起评论