• 有趣的设计——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

  • 相关阅读:
    Asp.Net页面导入和导出到EXCEL
    ASP.NET打包安装的制作方法
    asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式
    aspx页面Repeater嵌套Repeater
    JAVASCRIPT校验大全
    SQL语句导入导出大全
    从DataView中生成Excel报表的方案
    用ajax实现dropdownlist多级联动实例
    ASP.NET结合存储过程写的通用搜索分页程序
    C#程序调用外部程序
  • 原文地址:https://www.cnblogs.com/pingping-joe/p/13539465.html
Copyright © 2020-2023  润新知