`

一行“神奇”的代码

 
阅读更多
 

 最近在复习闫宏的《Java与模式》,在介绍责任链模式的时候文中使用了红楼中“击鼓传花”的例子。以前只是粗略的翻阅了一下,没有仔细的看其中的源码。今天仔细看了其中的代码,发现一个令人疑惑的地方,这行代码如下:  

 

Player player = new JiaMu(new JiaZeng(new JiaBaoyu(new JiaHuan())));

 

刚开始感觉很神奇,但是仔细看了类图才明白这一串的new后面的对象都是继承于一个Player类。Player提供了一个构造方法:

class Player {
 private Player player;

 public Player(Player player) {
  this.player = player;
 }
}

 


按原来的结构,重新写了一个只与这行“神奇”代码相关的类,如下所示:

class JiaMu extends Player {
 public JiaMu(Player player) {
  super(player);
  System.out.println(" 贾母传花ing...");
 }
}

class JiaZeng extends Player {
 public JiaZeng(Player player) {
  super(player);
  System.out.println(" 贾政传花ing...");
 }
}

class JiaBaoyu extends Player {
 public JiaBaoyu(Player player) {
  super(player);
  System.out.println(" 贾宝玉传花ing...");
 }
}

class JiaHuan extends Player {
 public JiaHuan(Player player) {
  super(player);
  System.out.println(" 贾环传花ing...");
 }
}

public class Test {

 public static void main(String[] args) {
  Player player = new JiaMu(new JiaZeng(new JiaBaoyu(new JiaHuan(null))));
 }
}

 

此时才知道自己也有些浮躁了,“路漫漫其修远兮,吾将上下而求索”,此时备感深刻。

 

“海纳百川,有容乃大,壁立千仞,无欲则刚。”

 

补充:

new JiaMu(new JiaZeng(new JiaBaoyu(new JiaHuan(null))));

 

该代码在此文责任链中的作用为:JiaMu后面的传花人为JiaZeng,jiaZeng后面的传花人为JiBaoyu,jiaBaoyu后面的传花人为JiaHuan,JiaHuan后面没有人接应,所以为null。

分享到:
评论

相关推荐

    世界第一高手的神奇代码

    3. **简洁性**:可能代码非常简洁,但功能强大,体现了编程的艺术性和“少即是多”的原则,如使用了一行代码解决复杂问题。 4. **可读性**:代码易于理解和维护,遵循良好的编码规范,即使对于不熟悉该领域的程序员...

    一个神奇的只有几行代码的Matlab程序-magic.rar

    一个神奇的只有几行代码的Matlab程序-magic.rar ff是(除%外)代码不过十行的程序. 但是运行起来有点诡异哦。 >> ff ans = 0 >> ff ans = 1 >> ff ans = 0 >> ff ans = 1 复制代码

    Sublime Text 3

    Sublime Text 是一个代码编辑器。也是HTML和散文先进的文本编辑器。漂亮的用户界面和非凡的功能,例如:迷你地图,多选择,Python插件,代码段等等。完全可自定义键绑定,菜单和工具栏等等.漂亮的用户界面和非凡的...

    超酷!25行as3代码可以有很神奇的效果。

    这篇描述提及的是一个AS3的演示项目,通过仅仅25行代码就实现了令人惊叹的视觉效果,尤其是提到了一个ASCII摄像机的功能。ASCII艺术是一种将图像转化为字符的艺术形式,而ASCII Cam则是将实时视频流转化为ASCII字符...

    android微信支付只需一行代码调用

    然后,就是调用那行神奇的代码。假设我们有一个名为`startWeChatPay`的静态方法,它接收预处理好的支付参数,并启动微信支付的流程。这行代码可能是这样的: ```java WxPayUtil.startWeChatPay(this, packageValue,...

    Python 一行代码能实现丧心病狂的功能

    主要介绍了Python 一行代码能实现丧心病狂的功能,需要的朋友可以参考下

    去掉这段代码的话在IE下显示会有问题

    <!--这是一行很神奇的注释,去掉的话在IE下显示会有问题,不知道为什么 -->

    一个神奇的打印乘法99表算法

    例如,第一行第一列的元素是1×1=1,第一行第二列的元素是1×2=2,以此类推。 在Java语言中,我们可以用嵌套循环来实现这个算法。`Multi99.java`文件很可能包含的就是这样的代码。通常,外层循环负责乘数(行),内...

    神奇的代码 通杀各种网站-可随意修改复制页面内容

    在浏览器地址栏输入这一行代码,然后回车,就发现整个页面都可以随意编辑了。仅仅是一行很短的代码。

    Python趣味代码实现: 绘制过期、俄罗斯方块、人脸识别等 [源代码]

    六.Python 25行代码实现人脸识别 参考资料: 知乎 - 可以用 Python 编程语言做哪些神奇好玩的事情? 知乎 - 学习Python的迷茫,如何高效有趣地学习Python? 知乎 - 想知道大家都用python写过哪些有趣的脚本?

    浏览器分屏技巧,一行代码搞定!!!

    目录分屏效果神奇的一行代码修改书签中的网址附录 分屏效果 见证奇迹的时刻!!!然后让我们把时间回退30s,看看究竟发生了什么??? 神奇的一行代码 [removed][removed]('') 修改书签中的网址 创建一个书签

    apk反编译神奇

    APK是Android应用的安装包,由Java源代码经过编译、打包和签名等一系列过程生成。反编译即是对已编译的二进制代码进行解析,还原成可读的源代码或中间表示形式。这一过程通常涉及以下几个步骤: 1. **提取APK内容**...

    幻方 C++

    对于3x3的幻方,它有3行3列,目标是使每一行、每一列以及两条对角线上的三个数字之和都是相同的常数,这个常数通常是15(1+2+3+4+5+6+7+8+9的均值)。例如,经典的卢卡斯-勒让德幻方如下所示: ``` 4 9 2 3 5 7 8 1...

    精选编程、代码字体合集

    如果你写代码一直使用系统默认的字体,那么快点换一种编程字体吧,不仅能让代码一下子显得漂亮很多,而且字体的辨识率高了,多少也能提高点效率的。下面是字体的介绍和预览,为了方便大家下载,我已将全部字体的打包...

    IntelliJ IDEA 教程

    其实笔者也是一枚从Eclipse转IDEA的探索者,随着近期的不断开发实践和调试,逐步体会到这款智能IDE带来的巨大开发便利,在强大的插件功能支持下,诸如对Git和Maven的支持简直让人停不下来,各种代码提示,包括JS更是...

    神奇宝贝

    神奇宝贝,全称为《精灵宝可梦》(ポケットモンスター),是由日本Game Freak公司开发、任天堂发行的一款全球知名的角色扮演游戏系列。自1996年第一代作品《红·绿》在日本发布以来,该系列已经发展成为涵盖游戏、...

    live scripts神奇的实时脚本MATLAB.zip

    当你运行Live Script时,每一行代码都会立即执行,结果会自动更新到文档中,这使得调试和验证代码变得更加直观和高效。 Live Scripts的使用场景非常广泛,包括但不限于教学、研究和报告编写。在教学中,教师可以...

    C编译器源代码(超级牛b)

    而汇编语言,是计算机硬件层面的语言,每一行指令都对应着特定的机器操作,直接控制CPU的行为。IBM80x86系列是Intel公司设计的一系列微处理器,包括8086、80286、80386等,广泛应用于个人电脑中。 C编译器的源代码...

    MFC Windows程序设计(第2版修订版)--源代码

    一部分是由于VisualC++代码生成向导所生成的代码所致,另一个原因是因为无数行代码隐藏在MFC类库中。这正是本书使用特殊的方法来写MFC的缘由。本书从让您亲自手写代码开始(不用向导),使用MFCl.0的应用程序结构风格...

    分享一个神奇的空间数据库

    空间数据库是一种特殊类型的数据库,专门用于存储、管理和分析地理...随着大数据和GIS技术的发展,空间数据库在各行各业中的作用日益凸显,对于理解和利用这类数据的专业人士来说,掌握空间数据库的相关知识至关重要。

Global site tag (gtag.js) - Google Analytics