最近在复习闫宏的《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 ff是(除%外)代码不过十行的程序. 但是运行起来有点诡异哦。 >> ff ans = 0 >> ff ans = 1 >> ff ans = 0 >> ff ans = 1 复制代码
Sublime Text 是一个代码编辑器。也是HTML和散文先进的文本编辑器。漂亮的用户界面和非凡的功能,例如:迷你地图,多选择,Python插件,代码段等等。完全可自定义键绑定,菜单和工具栏等等.漂亮的用户界面和非凡的...
Python因其简洁明了的语法和强大的内置函数库,经常被用来实现一些看似复杂但用一行代码就能搞定的功能。本文将详细介绍Python一行代码能实现的几个典型功能,并对每个功能背后的逻辑进行解析。 首先,实现109张...
这篇描述提及的是一个AS3的演示项目,通过仅仅25行代码就实现了令人惊叹的视觉效果,尤其是提到了一个ASCII摄像机的功能。ASCII艺术是一种将图像转化为字符的艺术形式,而ASCII Cam则是将实时视频流转化为ASCII字符...
然后,就是调用那行神奇的代码。假设我们有一个名为`startWeChatPay`的静态方法,它接收预处理好的支付参数,并启动微信支付的流程。这行代码可能是这样的: ```java WxPayUtil.startWeChatPay(this, packageValue,...
在这份文件中,标题和描述都提到了“神奇代码复制不能复制的网页内容.pdf”,这意味着文档所涉及的主题是关于如何通过JavaScript代码克服网页上的复制限制,从而使用户能够复制通常无法通过鼠标右键或Ctrl+C复制的...
--这是一行很神奇的注释,去掉的话在IE下显示会有问题,不知道为什么 -->”以及非标准的DOCTYPE声明可能共同作用于IE浏览器,以确保页面能够以一种较为正常的方式渲染。虽然具体的技术细节尚不清楚,但从实际应用的...
例如,第一行第一列的元素是1×1=1,第一行第二列的元素是1×2=2,以此类推。 在Java语言中,我们可以用嵌套循环来实现这个算法。`Multi99.java`文件很可能包含的就是这样的代码。通常,外层循环负责乘数(行),内...
描述中提到的“在浏览器地址栏输入这一行代码”,这是指利用浏览器的JavaScript执行环境来运行代码。地址栏(也称为URL栏)不仅用于输入网址,还可以用于输入JavaScript命令,当按下回车键时,浏览器会尝试执行这些...
六.Python 25行代码实现人脸识别 参考资料: 知乎 - 可以用 Python 编程语言做哪些神奇好玩的事情? 知乎 - 学习Python的迷茫,如何高效有趣地学习Python? 知乎 - 想知道大家都用python写过哪些有趣的脚本?
目录分屏效果神奇的一行代码修改书签中的网址附录 分屏效果 见证奇迹的时刻!!!然后让我们把时间回退30s,看看究竟发生了什么??? 神奇的一行代码 [removed][removed]('') 修改书签中的网址 创建一个书签
APK是Android应用的安装包,由Java源代码经过编译、打包和签名等一系列过程生成。反编译即是对已编译的二进制代码进行解析,还原成可读的源代码或中间表示形式。这一过程通常涉及以下几个步骤: 1. **提取APK内容**...
对于3x3的幻方,它有3行3列,目标是使每一行、每一列以及两条对角线上的三个数字之和都是相同的常数,这个常数通常是15(1+2+3+4+5+6+7+8+9的均值)。例如,经典的卢卡斯-勒让德幻方如下所示: ``` 4 9 2 3 5 7 8 1...
如果你写代码一直使用系统默认的字体,那么快点换一种编程字体吧,不仅能让代码一下子显得漂亮很多,而且字体的辨识率高了,多少也能提高点效率的。下面是字体的介绍和预览,为了方便大家下载,我已将全部字体的打包...
其实笔者也是一枚从Eclipse转IDEA的探索者,随着近期的不断开发实践和调试,逐步体会到这款智能IDE带来的巨大开发便利,在强大的插件功能支持下,诸如对Git和Maven的支持简直让人停不下来,各种代码提示,包括JS更是...
神奇宝贝,全称为《精灵宝可梦》(ポケットモンスター),是由日本Game Freak公司开发、任天堂发行的一款全球知名的角色扮演游戏系列。自1996年第一代作品《红·绿》在日本发布以来,该系列已经发展成为涵盖游戏、...
当你运行Live Script时,每一行代码都会立即执行,结果会自动更新到文档中,这使得调试和验证代码变得更加直观和高效。 Live Scripts的使用场景非常广泛,包括但不限于教学、研究和报告编写。在教学中,教师可以...
QQDIY名片是一种个性化的展示方式,通过JSON代码可以自定义名片的各个元素,包括背景图、点赞按钮、小图标以及各种文字颜色等。本文将深入解析如何利用JSON代码来设计一个独一无二的QQDIY名片。 首先,JSON...