有趣的设计——java的行为参数化

有趣的设计——java的行为参数化

作者:星晴(当地小有名气,小到只有自己知道的杰伦粉)

今天公司离职了很多人,公司也没有安排什么事,我也不知道要干什么,每天在公司看看技术论坛,看看博客,写写文章打发时间吧,公司现在的氛围真的让人难受,希望过段时间有所好转吧。

今天跟大家分享一下java的行为参数化有什么好处,应用场景是什么?

前言

在软件工程中,众所周知,不管你做什么,用户的需求肯定会变。比方说餐厅采购人员去市场挑选鱼,当然鱼的选择有很多要求,比如品种,重量等等,反正就是食客想要什么,餐厅就会去这么做,毕竟做生意都是这样。 采购人员跟市场人员沟通后,市场人员就会统计有多少符合要求的鱼,那我们做的就是去筛选符合条件的鱼。

小试牛刀,筛选鱼

一般做法,首先创建一个鱼这个类,然后getSelectFish,遍历所有的鱼,如果有匹配的就放到数组里面,最后返回。以后有扩展,复制一份getSelectFish,里面的判断换掉就行了。 1596766640372.png

1596767394456.png

初步改进

把过滤参数放到方法签名里面,这样是不是就会减少复制的代码,但是请注意,如果在加一个筛选条件是不是又要复制一份,多一个参数。作为软件工程师怎么能打破DRY(do not repeat yourself)的软件工程原则呢?

1596769829304.png

行为参数化

行为参数化就是可以帮助处理频繁变更的需求的一种软件开发模式。

言以蔽之,它意味着拿出一个代码块,把它准备好却不去执行它。这个代码块以后可以被程序的其他部分调用,这意味着可以推迟这块代码的执行例如,可以将代码块作为参数传递给另一个方法,稍后再去执行它。这样,这个方法的行为就基于那块代码被参数化了。

1596770465308.png

1596770506404.png

1596770543932.png

1596770434696.png

这样getSelectFish就可以适应所有的过滤条件,再也不用重复写getSelectFish了,当然你如果觉得这样就结束了,那你太没有追求了,我们如何优化代码呢?

优化代码

1596770926037.png

通过Lambda表达式可以把几个过滤类去掉,是不是更简单了,优化的路上我们要坚持不懈,如何可以更优化呢?

泛型进行通用

1596771137705.png

这样getSelectFish是不是更加通用了,可以适配所有的实物了

 

总结:如果遇到频繁变更的过滤条件,可以采用行为参数化进行设计。

 

关注公众号,有更多好玩的等着你!!!

img

posted @   星晴-joe  阅读(279)  评论(0编辑  收藏  举报
编辑推荐:
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
阅读排行:
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 2025成都.NET开发者Connect圆满结束
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络
点击右上角即可分享
微信分享提示