找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
  • 网友反映远安桃花岛步道破损隐患,住建部门火速处置,官方留言却遭平台屏蔽引唏嘘

    网友反映远安桃花岛步道破损隐患,住建部门

  • 网曝远安桃花岛上惊现安全隐患,钉子都出来了,周边都是孩子在玩耍

    网曝远安桃花岛上惊现安全隐患,钉子都出来

  • 被网友举报远安北万路上这辆挂人后视镜直接走掉的鄂A本田,罚单来了

    被网友举报远安北万路上这辆挂人后视镜直接

  • 网友举报这辆半挂竟公然在远安泉水冲那里闯红灯,别急,罚单已到位!

    网友举报这辆半挂竟公然在远安泉水冲那里闯

  • 好消息!武陵峡果园杨梅开园啦!老板发福利啦

    好消息!武陵峡果园杨梅开园啦!老板发福利

  • 精装修门面出租:无转让费!周边配套齐全,房东(胡)

    精装修门面出租:无转让费!周边配套齐全,

  • 厕所顶部漏水半年多维权困难 寻求帮助

    厕所顶部漏水半年多维权困难 寻求帮助

  • 远安G347国道上这辆大货车,你的罚单来了

    远安G347国道上这辆大货车,你的罚单来了

  • 紧急提醒:远安县刚刚发布暴雨橙色预警,注意避险防范

    紧急提醒:远安县刚刚发布暴雨橙色预警,注

  • 【招聘保洁熟手】

    【招聘保洁熟手】

  • 襄阳发布警情通报

    襄阳发布警情通报

  • 吐槽一下家门口的清洗街道车😔😔

    吐槽一下家门口的清洗街道车😔😔

  • 险象环生!远安万山弯道五菱神车逆行别车,罚单来了

    险象环生!远安万山弯道五菱神车逆行别车,

  • 突发!刚刚远安这条网红彩虹路边,翻了一辆车

    突发!刚刚远安这条网红彩虹路边,翻了一辆

  • 远安凤凰湾门口路段这位女司机,你的罚单来了

    远安凤凰湾门口路段这位女司机,你的罚单来

  • 【小董有个友好请求🫡】

    【小董有个友好请求🫡】

  • 一串红提,宛如秋日里的一抹亮色...

    一串红提,宛如秋日里的一抹亮色...

  • 远安汽摩协会与远安特校十年相伴,童心同行

    远安汽摩协会与远安特校十年相伴,童心同行

  • 【五月·共勉】

    【五月·共勉】

  • 当阳市公安局玉泉派出所原指导员朱心维接受纪律审查和监察调查

    当阳市公安局玉泉派出所原指导员朱心维接受

  • 远安广坪路段这辆奥迪,你的行为太危险了,你就不怕成了夹心饼干吗

    远安广坪路段这辆奥迪,你的行为太危险了,

  • 在远安洋坪路段违法超车的这辆车,你的罚单刚刚出来了

    在远安洋坪路段违法超车的这辆车,你的罚单

  • 这辆车在远安县解放路与凤德路交汇路口违停,极大交通隐患

    这辆车在远安县解放路与凤德路交汇路口违停

  • 网友反映远安城区这里的行道树上长满了白蚁,观之肉麻!不知道该找谁治

    网友反映远安城区这里的行道树上长满了白蚁

  • 【上午9点把门锁, 小飞侠这是要闹哪出? 】

    【上午9点把门锁, 小飞侠这是要闹哪出? 】

  • 湖北安广陶瓷招聘销售跟单

    湖北安广陶瓷招聘销售跟单

  • 今晚,调油价!

    今晚,调油价!

  • 必须曝光!今天上午,远安嫘祖镇广坪路段这辆婚庆公司的轻卡强行超车肇事逃逸

    必须曝光!今天上午,远安嫘祖镇广坪路段这

  • 坚强的小米辣

    坚强的小米辣

  • 远安人,这个“2026年度综合补贴”是诈骗!

    远安人,这个“2026年度综合补贴”是诈骗!

  • 查看: 7616|回复: 1

    Java语言编程学习之Lambda表达式设计和架构的原则[图]

    [复制链接]
    • 打卡等级:无名新人
    • 打卡总天数:1
    • 打卡月天数:0
    • 打卡总奖励:10
    • 最近打卡:2023-06-13 20:58:02
         
    荆楚不肖生 发表于 2018-7-17 16:19 | 显示全部楼层 |阅读模式 来自 中国–湖北–宜昌 电信

    赶紧注册,享受更多功能!查看帖内大图!

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×
    Java语言编程学*之Lambda表达式设计和架构的原则[图]:
    大家都知道,Lambda表达式是对Java语言的一点简单改进,在JDK标准类库中,运行它的方式各种各样。但是大多数的Java代码都不是由开发JDK的程序猿写的,而是像我们这样的普通程序猿。
    很多人都会碰到过这样的情况:你实现了一个新功能或修复了一个缺陷,并且对自己的修改很满意。但其他人看了你的代码后——也许发生在代码审查环节,完全不买账!对于什么是好代码,什么是坏代码,存在分歧很正常!
    设计模式的改变
    设计模式是人们熟悉的另一种设计思想,它是软件架构中解决通用问题的模板。如果碰到一个问题,并且恰好熟悉一个与之适应的模式,就能直接应用该模式来解决问题。从某种程度上来说,设计模式将解决特定问题的最佳实践途径固定了下来。
    当然的了,没有永远的最佳实践。以曾经风靡一时的单例模式为例,该模式确保只产生一个对象实例。在过去十年中,人们批评它让重新变得更脆弱,且难于测试。敏捷开发的流行,让测试显得更加重要,单例模式的这个问题把它变成了一个反模式:一种应该避免使用的模式。
    所以我们应该知道的是,正确的使用Lambda表达式,让现有的设计模式变得更好、更简单,或者在某些情况下,有了不同的实现方式。

    Java语言编程学习之Lambda表达式设计和架构的原则[图]

    Java语言编程学习之Lambda表达式设计和架构的原则[图]

    常见的一些设计模式:
    命令者模式:
    命令者是一个对象,它封装了调用另一个方法的所有细节,命令者模式使用该对象,可以编写出根据运行期条件,顺序调用方法的一般化代码。命令者模式中有四个类参与其中,如图:
    2.策略模式:
    策略模式能在运行时改变软件的算法行为。如何实现策略模式根据你的情况而定,但其主要思想是定义一个通用的问题,但是不同的算法来实现,然后将这些算法都封装在一个统一接口的背后。
    文件压缩就是一个很好的例子:
    3.观察者模式:
    观察者模式是另一种可被Lambda表达式简化和改进的行为模式。在观察者模式中,被观察者持有一个观察者列表。当被观察者的状态发生改变,会通知观察者。观察者模式被大量应用于基于MVC的GUI工具中,以此让模型状态发生变化时,自动刷新视图模块,达到二者之间的解耦。
    4.模板方法模式:
    开发软件时一个常见的情况是有一个通用的方法,只是步骤上略有不同,我们希望不同的实现能够遵守通用模式,保证他们使用了同一个算法,也是为了让代码更加易读。窗边的小豆豆读书笔记摘抄好词好句及感悟赏析,一旦你从整体上理解了算法,就能更容易理解其各种表现。
    模板方法模式是为这些情况而设计的:整体算法的设计是一个抽象类,它有一系列抽象方法,代表算法中可被定制的步骤,同时这个类中包含了一些通用代码。算法的每一个变种由具体的类实现,它们重写了抽象方法,提供了相应的实现。
    使用Java编写DSL
    领域专用语言(DSL)是针对软件系统中某特定部分的编程语言。他们通常比较小巧,表达能力也不如Java这样能应对大多数编程任务的通用语言强。DSL高度专用:不求画面俱到,但求有所专长。
    Java BDD框架:下面的例子描述了一个Stack的某些行为。
    (左右滑动可以查看)
    public class StackSpec{{
    describe("a stack", it -> {
    it.should("be empty when created",expect -> {
    expect.that(new Stack()).isEmpty();
    });
    it.should("push new elementsonto the top of the stack", expect -> {
    Stack<Integer> stack = new Stack<>();
    stack.push(1);
    expect.that(stack.get(0)).isEqualTo(1);
    });
    it.should("pop the last element pushed onto the stack", expect -> {
    Stack<Integer> stack = new Stack<>();
    stack.push(2);
    stack.push(1);
    expect.that(stack.pop()).isEqualTo(2);
    });
    });
    }):                                            
    首先我们使用动词 describe 为套件起头,然后定义一个名字表明这是描述什么东西的行为,这里我们使用了 "a stack"。
    每一条规则读起来尽可能接近英语中的句子。它们均以 it.should 开头,其中 it 指正在描述的对象。然后用一句简单的英语描述行为,最后使用 expect.that做前缀,描述期待的行为。
    检查规则时,会从命令行得到一个简单的报告,表明是否有规则失败。你会发现 pop 操作期望的返回值是 2,而不是 1,因此“pop the last element pushed onto the stack” 这条规则就失败了:
    a stack
    should pop the last element pushed onto the stack[expected: but was: ]
    should be empty when created
    should push new element onto the top of the stack
    好了,我们本期就到这里了!再见!
    百姓地盘、草根平台!(点击修改为自己的签名)客服QQ:139725796
    • 打卡等级:即来则安
    • 打卡总天数:28
    • 打卡月天数:0
    • 打卡总奖励:1687
    • 最近打卡:2026-05-27 22:10:38
         
    年轻就是资本 发表于 2018-7-18 14:26 | 显示全部楼层 来自 中国–湖北–荆州 电信
    百姓地盘、草根平台!(点击修改为自己的签名)客服QQ:139725796
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    

    Archiver|手机版|小黑屋|认证|简介|联系我们|赤脚网[临沮网] ( 鄂ICP备18015422号|42052502000021 )

    GMT+8, 2026-6-18 01:38

    Powered by Discuz! X3.5

    © 2001-2026 Discuz! Team.

    网站内容仅代表网友个人观点,非本站认同之观点!删帖请用删帖卡,或在申请版块发帖申请,或联系【 bbs@yalj.net 】我们会尽快处理。
    声明:严禁任何人以任何形式在本站发表与中华人民共和国法律相抵触的言论!
    技术管理:远安坤哥    主办单位:远安县临沮网信息管理中心
                       
    快速回复 返回顶部 返回列表