导读:从具体事物抽出,概括出它们共同点如本质属性与关系等而暂不考虑它的细节,不考虑其他因素,这种思维过程,称为抽象。抽象能力尤其对于程序员来说十分重要。
通俗地理解什么是抽象?
抽象从字面上理解,形象被抽掉了只剩下一个概念。生活中我们所感受到的东西都是具体的,把很多相似的具体东西集结起来,抽出它们最本质的东西,忽略掉其他部分就是抽象了。
我们可以换个思考方式,抽象的反义词是具体,这样会更好地理解抽象的含义。
生活中抽象的例子
抽象的例子有很多。这里各位思考尝试一下对“足球运动”和“软件开发”进行抽象。
- 足球是一个11人团队运动,由前锋、中锋、边锋、中场、边卫、中卫、后卫等多个位置组成,团队成员间需各司其职,默契配合才能创造佳绩。
- 同理,软件开发也是需要由一个团队成员相互协作完成的一件事情,团队间由项目经理、产品、前端、后台、运维、测试等组成,相互配合才能高效高质量上线产品。
通过对上面两个看似不相关的东西进行抽象,抽出他们的共同点则是需多人参与相互协作的一种活动行为。
建议:锻炼抽象思维可以自己列举出两个物品并进行思考抽象联系。
实际开发中抽象的例子
相信各位在实际开发中应该都会遇到这种现象,随着业务和需求越来越复杂和增多,程序总是需要进行调整、扩展和重构。这个时候如果有良好抽象能力的程序员则能够深入理解业务,并根据业务的特点抽象出软件最合理的设计(可读性、扩展性、伸缩性等)。像设计模式、中间件等也是慢慢在这些抽象的过程中产生。
这里举一个简单的模型设计例子,一个音乐竞赛类APP软件,选手报名比赛会在APP上以点赞数进行排行,粉丝则通过向自己喜欢的偶像点赞,但是点赞是有限制的。主办方想有一个商场系统,用户在商场购买比赛纪念品后可以获取点赞券,该券则可用于增加赞数。
到这里便开始对数据模型进行设计。如果不深入思考抽象,我们很快按需求便设计出一个点赞券模型(点赞数、有效日期、结束日期.等属性),那这样做会有什么问题?假如后期主办方的商城想渐渐拓展业务,想推出打折券、满减券等来吸引用户。那么则时候进行系统代码的修改调整那么工作量将会很大。
问题出在了哪里?
没有很好的对东西进行抽象,没有考虑到可扩展性。现在对打折券、满减券、点赞券进行抽象,三者都是一种优惠券,对于用户来说都是福利的券。那么在一开始的模型设计上如果考虑到了这点,那么将可应对后来的改变。当然这也是一个小小的例子,软件开发抽象之处有很多。
最后
关于抽象的话题,我们就讨论到这里。抽象能力对于程序员来说很重要,不过要注意的是,软件开发并不是仅仅只依靠抽象能力就能完成的,把抽象出来的架构、模型等实现,逻辑思维能力、系统分析能力等占很重要的部分。
漫漫开发之路,我们只是其中的一小部分……只有不断的学习、进阶,才是我们的出路!才跟得上时代的进步!
今年年初我花一个月的时间收录整理了一套知识体系,如果有想法深入的系统化的去学习的,资料免费领取方式:加群:797404811,我会把我收录整理的资料都送给大家,帮助大家更快的进阶。
重要的事说三遍,转发+转发+转发,让更多需要的朋友们都可以看到并且领到!
网友评论