14 | 实战二(下):如何利用面向对象设计和编程开发接口鉴权功能?
该思维导图由 AI 生成,仅供参考
如何进行面向对象设计?
1. 划分职责进而识别出有哪些类
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何利用面向对象设计和编程开发接口鉴权功能。首先,文章讲解了面向对象设计的步骤,包括划分职责、定义类及其属性和方法等。通过针对鉴权功能的实例,详细阐述了如何根据需求描述识别出相关类,并设计其属性和方法。文章强调了在设计类时需要考虑业务模型的完整性和未来需求的准备。此外,还介绍了面向对象设计在复杂需求开发中的应用方法,以及模块划分和识别类的套路。总的来说,本文通过实例详细解释了面向对象设计的思路和方法,对于开发人员理解面向对象设计和编程具有一定的指导意义。文章还提到了UML统一建模语言中定义的类之间的六种关系,以及如何将类组装起来并提供执行入口。最后,文章强调了在实际工作中,面向对象设计和编程是一个迭代、修修补补、不断重构的过程,需要灵活应用。
《设计模式之美》,新⼈⾸单¥98
全部留言(176)
- 最新
- 精选
- 斜杠青年置顶生成Token的算法可以用不可逆的Hash算法吗?例如MD5或是SHA?
作者回复: 可以的,我就是用的不可逆的
2019-12-0958 - 大大。争哥:设计了一个最顶层的 ApiAuthencator 接口类,为什么要设计出一个顶层的接口,虽然是面向接口编程,但是写成接口,意味着还会有其他的不同实现吗,如果有其他不同的实现,那么接口中的第二个参数的ApiRequest也不一定会适用不同的那个实现的传参,不知道说明白没有
作者回复: 你说得很好,多谢指出啊,确实没必要搞个接口,ApiRequest的设计也依赖了具体的url实现,所以也不是很通用。
2019-12-04566 - ThinkingQuestApiAuthenticator接口的两个方法,都声明为返回void, 用Exception来控制token过期或不合法,这样好吗? token过期或不合法,在业务上应该是一种正常的,需要程序逻辑分支来处理的情形吧, 用throw runtime exception的方式来处理, 感觉上等于是把exception用于控制执行流程了。 关于这个,不知道应该怎么考虑。
作者回复: 嗯嗯,你说的也对,那应该用boolean值作为返回值吗?那携带的信息就很少呀,只有true、false,不知道失败的原因。我觉得选择exception就是一种设计上的权衡。
2020-08-298 - 瑞泉王争老师,代码是在这个地址吗?https://github.com/wangzheng0822/codedesign,是空的
作者回复: 是的 还没空整理 稍等一阵子吧
2019-12-1665 - grey927王老师,你好,我有个问题,针对:AuthToken中,isExpired()方法,这里返回的是布尔类型,那么,如果我传的是 - 错误的token - 正确的token但是过期 这两类都会判断成false,那么我怎么知道我的token是格式问题还是过期问题呢?
作者回复: isExpired()只用来判断是否过期,match()用来判断是否错误
2020-07-253 - unreal有个问题,ApiRequest叫法虽然更加通用,但实际创建接口命名还是依赖实现了吧,都是基于url的,还是我理解问题?
作者回复: 多谢建议,你说的没错,ApiRequest确实还是依赖了url
2019-12-0732 - 航哥很帅面型对象设计主要分为4个步骤: 1.根据需求设计需要的类; 2.确定类中的属性和方法,确定属性一般根据需求分析中的名称,确定方法一般根据需求分析中的动词; 3.确定类和类之间的关系,这些关系一般包括:泛化(继承)、实现、组合、依赖; 4.将类封装起来并提供执行的入口,这个入口就是这段代码运行起来的入口。
作者回复: 总结的到位
2020-11-131 - tt本讲中的面向对象分析和面向对象设计在阅读源码的时候可以使用么?就是先感动源码的整体设计,让后自顶向下的剖析源码
作者回复: 先了解整体结构,再了解细节,思路是对的。
2019-12-041 - WolvesLeader大佬,我想问一下,怎么改成提供token的服务呢
作者回复: 没怎么看懂
2020-11-292 - 兔嘟嘟看了几遍还是没懂,AuthToken类为什么构造函数要传入一个token,token不应该是类内生成的吗?以及如果已经通过构造函数获得了一个token,那么create函数又有什么作用?
作者回复: 既支持外界生成好token,传递进来,创建AuthToken,比如从客户端传来的token,我们在后端包裹成AuthToken继续处理。也支持直接根据基础数据升成AuthToken,也就是create函数的作用
2020-06-22