当前位置: 首页 > news >正文

凭什么要用面向对象编程(补充)

007-10-02 08:00 小菜在家中准备
小菜开始准备给人家讲座的内容,一开始都很顺利。可是当要把不同的验证方式给细化时,发现了问题。


24 原有的接口实现关系图

如果要再把是用户名密码验证,还是指纹验证的代码加进来,应该如何写具体的实现类呢?


25 SqlServer实现类改造
此时你会发现,如果要实现这个功能,你必须在你的每个实现类中写出上面的判断语句,如果某一天要增加一种数据访问(比如MySql)你就得再写一遍类似的代码,如果某天增加一个用户验证的方式(比如人脸识别验证),你就得改动所有的实现类的分支判断。这显然是让人难以接受的。

小菜决定换一种思路

26 多个类的多重继承

也就是把分支判断的语句,通过继承的方式给分解掉,这样每一种实现都体现成为一个类。只要有新的数据访问或者用户验证方式,不外乎就是增加类就可以了。应该是解决了问题。

可是,看着这张图,小菜感觉不到设计的美。如果,我们增加一种数据访问(如MySql),我们需要增加至少四个类。如果我们增加一种验证方式(如人脸识别验证),那就需要每个数据访问下都继承一个类。目前是3*3共9个类,当扩展需求来了以后,类的增加会成为一个梦魇。

难道没有办法了吗?

1)当想不出解决办法时,分析自己的代码有什么容易被改变的地方,可能找到解决思路


回到那个接口



其实当我们要增加一种验证方式时,这个Users类也是要修改的。而且对于Users类来说,验证时通常只会用到当中的一两个属性,而现实中,Users类的属性如性别、生日、姓名等等都对验证来说没有意义。此时发现,验证和用户类本身还是有区别的,验证属性其实只是用户类一小部分属性而已。对于数据库来说,我们把用户名、密码、门禁卡编号、指纹数据存到Users表里的字段中是没有问题,可在面向对象编程时,将它们混在一起的确不利于应对变化。

2)当想不出解决办法时,再次仔细分析需求,并找出需求的本质是个很好的办法

登录是为了验证用户,验证有很多种表现形式。网络上的验证通常就是用户名和密码,但随着科技的进步,指纹试别、面部试别等技术都可以成为验证用户的手段。而这一切,其本质上,验证就是抽象概念,其它都是它的实现方式。那么验证应该就是接口,那几个表现方式是它的实现类。OK,思路有了。

思路:提炼出验证接口,将不同的验证实现这个接口,将用户管理接口的登录方法聚合这个接口。


27 相对较好实现办法的类图

将验证分离成一个接口,不同的验证方式不过是验证的一种表现形式。









32 更改了原用的参数,改用验证接口

http://www.jsqmd.com/news/1132525/

相关文章:

  • 输电线异物检测数据集725张VOC+YOLO格式
  • 【Qwen3.6-27B技术解析】27B稠密模型如何用混合架构击败397B MoE
  • PingFangSC字体包:让Windows系统也能享受苹果级别的中文排版体验
  • Linux DRM dma_fence实战:基于AMDGPU分析多硬件单元同步的5个关键场景
  • 到店组装一台全新台式电脑,全程到底要多久?附完整时间表与避坑指南
  • 3分钟快速上手:Moonlight安卓版虚拟手柄终极配置指南
  • CPU:数字世界的核心硬件基石
  • 国内光电互连解决方案提供商:四大硅光科创企业技术路线
  • IEC 61332:2026《软磁铁氧体材料分类》新版深度解读
  • aubo学习:控制柜
  • 重新认识C#: 玩转指针
  • 5分钟让Windows拥有苹果级中文显示效果:PingFangSC字体实用指南
  • LangChain和MAF-03]完全不同的Agent设计哲学
  • AWS Lake Formation与Glue深度集成:构建可审计的数据湖治理底座
  • 基于深度学习的图片NSFW检测API:原理、调用与最佳实践
  • 新手开网店先选抖店、微信小店哪个平台?无货源一键下单自动后售后软件别一上来就乱投钱
  • Python爬虫经典案例第69篇:电商平台爬取:Amazon数据采集实战
  • 数据视图笔记
  • 数据是抽象的,尤其是海量数据,
  • 使用C++20 的协程创建通用的生成器
  • MAVProxy架构解析:模块化无人机地面站的技术实现
  • 将ASP.NET MVC 2.0 部署在IIS6和IIS7上的教程
  • 快速集成文本相似度API:从零开始实现语义匹配
  • WebService,jQuery,原生对象几种前端加载数据的性能比较(1)
  • 多重共线性实战指南:检测、诊断与业务可解释的解决方案
  • 解锁免费高品质音乐:洛雪音乐音源完全指南
  • 3步解决Deforum扩展安装与使用难题:从零到动画生成的完整指南
  • 爆款复刻ai工具,2026年爆款视频复刻工作流,5款横评实测
  • 指数分布实战指南:从泊松过程到失效率建模
  • 如何快速上手 openeuler/cloudphone_kernel?从环境搭建到首次运行的完整指南