当我们要对某一个对象进行一系列操作的时候,通常要怎么做呢?

比如对一个“电脑”对象进行打字操作,一般的流程是这样的:

computer.power();//通电开机

computer.setInputMethod();//设置输入法

computer.pressKey();//敲击键盘打字

这类操作写下来。。。代码就变得不优雅了呀!!!而且随着你的操作越来越多,这些代码会越来越长。并且如果在其它地方很难直接复用。

那么如何优雅的解决这类问题呢?

定义一个链表操作对象!!!

首先我们定义一个Op类

public final class Op{Op next;String cmd;
}

再写一个执行Op对象的方法

public void execOp(Op op){if(op == null) return;switch(op.cmd) {case "power":computer.power();break;case "inputMethod":computer.setInputMethod();break;case "pressKey":computer.pressKey();break;}execOp(op.next);//在这里自己调用自己
}
​​

通过这种方式我们再处理操作的时候不就更方便了吗?代码不就优雅了吗?而且代码的复用性也增加了,嗯真香

当然这个时候肯定有小伙伴会说,那这个东西创建Op指令的时候也是一样的麻烦啊。。。怎么会呢?

简直优雅的不要不要的好吗

public Op createOp(String...cmds){if(cmd == null) return null;    Op opPre = new Op();Op op = opPre;for (String s:cmds) {if (op.next == null) op.next = new Op();op.next.cmd = s;op = op.next;}return opPre.next;
}

将指令作为数组传进去,然后就能得到一个Op链表命令,再通过execOp方法去执行完成。。。优雅的不行呀

今天学到一个新姿势(划掉)知识相关推荐

  1. 我又换了一个新姿势,三秒搞定「搬乐」Ad!再也不用撸代码啦!

    温馨提示:文末有送书福利 前言 为了帮助更多人,更多非程序员也能上手小游戏,晓衡之前提供了: GameNavigator:小游戏互跳导航组件 RewardedVideoAd:激励视频组件 Creato ...

  2. 专业|尧德中:脑器交互学,一个发展中的新学科

    来源:人工智能人物 尧德中 专家简介:电子科技大学信息医学研究中心主任,生命科学与技术学院首任院长(2001-2017):四川省脑科学与类脑智能研究院院长,神经信息科技部国际联合研究中心主任/教育部重 ...

  3. vuex commit 模块_分享一个Vuex的使用的新姿势

    本文适合对Vuex有过中度使用--至少在一个项目使用vuex以及相关辅助函数的朋友阅读. 关于Vuex(太长,可以不看) Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存 ...

  4. webservice 函数2007不可以用_Excel出了一个新函数,太好用啦!但我不建议你们学……...

    关注公众号[秋叶 Excel]回复关键词[工具]获取 Excel 高效小工具合集,让你效率开挂!本文作者:拉登 Dony本文来源:秋叶Excel(ID:excel100)本文编辑:思雨.竺兰我是拉登, ...

  5. c语言中把各位上为奇数的数取出,下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在冲。 - 赏学吧...

    下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在冲.高位仍在高位,低位仍在低位.例如当s中的数为87653142时,t中的数为7531. 请改正函数fun ...

  6. 我学到了一个新词汇:知识焦虑

    最近在阅读一本逻辑思维的书<我懂你的知识焦虑>,就下面这本: 才知道最近又多了一个词叫知识焦虑(我倒觉得是罗振宇搞出来的焦虑). 知识焦虑又叫信息焦虑综合症,百科词条的解释如下: 当外界信 ...

  7. 第二夜 半脸人 异闻录——每晚一个离奇故事 敬请期待,一天,一个离奇故事!如果您喜欢,请在评论里发表您的高见,支持,每天一个新故事!

    异闻录--每晚一个离奇故事 敬请期待,一天,一个离奇故事!如果您喜欢,请在评论里发表您的高见,支持,每天一个新故事! http://ike.126.com 第二夜 半脸人 "夜晚才适合讲那些 ...

  8. 2018浙大408考研经验(划掉)个人口胡 普通一本+二战(伪)+小跨吧大概

    文章目录 前言 初试+复试 初试: 英语 数学 政治 专业课 初试总结 复试 pat+机试 面试 选导师/实验室 总结 前言 我是个很懒的人,不怎么喜欢写博客,所以我简单的胡说八道几句吧,写的不好,拍 ...

  9. 学习一个新领域的知识的最佳方法和最快时间各是什么?

    Liu Cao ,「学习方法」是个伪命题 玉某人.冷峻.淡之 等人赞同 有个TED演讲简直是为这个问题量身订做的. The first 20 hours-How to learn Anything. ...

最新文章

  1. hdu 2041:超级楼梯(水题,递归)
  2. yum update不升级内核方法
  3. springboot activiti 整合项目框架源码 shiro 安全框架 druid 数据库连接池
  4. hoj1003 Mixing Milk (哈工大)
  5. Codeforces Round #709 (Div. 1) B. Playlist 链表维护 + bfs
  6. 基于图搜索的路径规划方法
  7. mysql 大数据量插入遇到瓶颈 可行性方案探究
  8. python爬虫 被重定向_爬虫篇 | 认识Python最最最常用语重要的库Requests
  9. Android ICS系统是支持通过互联网时间同步的
  10. 东北育才10天大总结
  11. 网易互娱基于 Flink 的支付环境全关联分析实践
  12. 布隆的盾能挡机器人_2020 年双十一有哪些扫地机器人值得买?
  13. 你需要的不是大数据 而是正确的数据~
  14. 【PAT B1019/A1069】数字黑洞
  15. 神经结构化学习 4 图像分类的对抗性学习Adversarial learning for image classification
  16. Mac中在Matlab中安装Mosek
  17. 超详细的Python面向对象编程讲解
  18. 【技术】5G技术的应用场景及发展趋势
  19. 3GPP TS 23501-g51 中英文对照 | 4.4.2 SMS over NAS
  20. 史上最全Maven教程(五)

热门文章

  1. Go发送Gmail邮件
  2. 应用编程课程4.系统IO和标准IO的比较,自己做的一些理解,仅仅方便自己看
  3. 微信直播聊天室单房间1500万在线的消息架构演进之路
  4. [活动已经结束] 2008(第五届)中国数据挖掘与商业智能研讨会
  5. 局域网语音对讲系统_IP广播对讲系统停车场解决方案
  6. 如何在网页中添加访问密码?
  7. Vue中阿拉伯数字与汉字的相互转换
  8. pyqt5 商店小票打印的实现模板
  9. “银行家算法”讲解,在前端表格中利用自定义公式实现“四舍六入五成双”
  10. ora-02063紧接着line起自