古往今来,杀手无数,杀人手段也是千奇百怪,从荆轲的直接用刀捅到《这个杀手不太冷》里面的狙击枪,甚至直接用伞碰你一下你都会挂的杀人手段,真是令人大开眼界,但是我今天要说的不是如何如何杀人,也不是怎样玩杀人游戏,而是我要说的设计模式之-Bridge设计模式。<o:p></o:p>
在面向对象设计的基本概念中,对象这个概念实际是由属性和行为两个部分组成的,属性我们可以认为是一种静止的,是一种抽象,一般情况下,行为是包含在一个对象中,但是,在有的情况下,我们需要将这些行为也进行归类,形成一个总的行为接口,这就是桥模式的用处<o:p></o:p>
面向对象的编程就是把我们把需要做的事情合理的抽象化,最大化的适应变化。看看上面说的杀手,“杀手”是一个集合名词,代表着一类人。佣金高,技术好的我们叫他“职业杀手”;佣金一半,杀人手段一般,我们叫“普通杀手”;而那些笨笨的,完全是一时冲动的杀手还没杀着人就被对手打晕了我们叫他“愚蠢杀手”,这类杀手甚至有点搞笑的含义:)。这些杀手为什么这么去分类,完全取决于他们的技术高低,而不管他们用什么手段去杀(即使用一根草,高手也可以快速置人于死地)。这个潜在的所谓技术就是他们本质的区别,当然成为我们区别他们的标准,而如何杀人仅仅是他们的行为而已。<o:p></o:p>
现在可以看清一点了,对于对象而言,属性是它的静态特征,而行为是他的动态特征,有时候我们不仅仅需要把特征抽象出来,而且需要把行为抽象出来,比如:对于杀手,技术的高低可以将他们进行分类,这是一个属性的抽象,而杀人手段千奇百怪,这是一个行为的抽象。<o:p></o:p>
现在言归正传,有上面三类杀手,而杀人手段暂定为“枪杀”,“火杀”两种我们应该如何去设计杀手这个类。<o:p></o:p>
1. 显然“杀手”是基类,三类杀手是子类<o:p></o:p>
2. 杀手杀人这个动作显然可以通过多种手段完成,好吧,也是一个抽象,这个是行为的抽象。<o:p></o:p>
我是这么设计的:<o:p></o:p>
<o:p></o:p>
java 代码
看看结果:<o:p></o:p>
下面我们看看杀手们的表演:<o:p></o:p>
我是职业杀手,看我的:点火...,我烧我烧我烧烧烧,快速搞定,闪人,嘻嘻!<o:p></o:p>
我是一个笨笨的杀手,看我的:瞄准...,射击-->>>,怎么老杀不了,完了,警察来了,555!!<o:p></o:p>
我是职业杀手,看我的:瞄准...,射击-->>>,快速搞定,闪人,嘻嘻!<o:p></o:p>
正如预料的一样,杀手们使用不同的手段去表现了他们的杀人技术。<o:p></o:p>
<o:p> </o:p>
可以很清晰的看到在类的设计里面我们将行为抽象出来了,这种设计的好处在于可以很方便的适应行为的扩充时和属性的扩充,比如我们现在出现了一个“投毒的高手”只需要增加一个“投毒”的杀人手段就可以了,反过来,如果将属性和行为绑定,或者单单是把不同杀手(比如“职业杀手”)进行扩充为“投毒高手”,“射击高手”,如此一个增加一种手段的各个级别的杀手将是一间不容易的事。<o:p></o:p>
这就是“bridge“模式的设计初衷-抽象行为。
第一次写这样的文章,轻拍。<o:p></o:p>
分享到:
- 2006-11-23 09:15
- 浏览 3200
- 评论(2)
- 论坛回复 / 浏览 (2 / 2991)
- 查看更多
相关推荐
关于杀人游戏规则.pdf
这是首款C#写的杀人游戏,里面用到新意的技术,如LINQ加SQL,等等
#资源达人分享计划#
品牌三十六计之“借刀杀人”策略.doc
根据最近全国范围内出现连环幼儿园杀人案件的分析,针对幼儿园的特殊环境我们公司提出了自己的构想,实现幼儿园环境真正走上安全:幼儿园是一个很脆弱的环境,很需要有一套安全有效的系统去管理。门口出入人员管理...
使用的代码中还实现了另外三种技术: 基于总计的方法(TMKPT) 基于加法的方法(AMKPT) 无需局部搜索的评估算法要运行MKEA-TCP,请运行Main.java类。 您可以在Main.java类文件中设置变异报告文件。 目前生成5个...
并以无人车举例,一辆无人车如果被黑客攻击了,它有可能变成一个杀人武器。毕 竟,开发出高新技术,究其根本是为了人类更好的生活,是为人类服务,倘若安全得不到 保障,就是在做无用功甚至是负功。特斯拉的无人驾驶...
谷歌地图和GIS中的其他此类地图在现代世界中对每个人的生活都具有重要意义,这是由于技术发展以及当代对旅行,商业计划,农业,电子营销供应链管理,普查和计划的需求以及人口普查使用手机。 作为一项革命性的技术,...
根据近全国范围内出现连环幼儿园杀人案件的分析,针对幼儿园的特殊环境我们公司提出了自己的构想,实现幼儿园环境真正走上安全:幼儿园是一个很脆弱的环境,很需要有一套安全有效的系统去管理。门口出入人员管理极为...
即时消息(正在开发中) 社交媒体(开发中) REST API和基于插件的系统报告和分析多语言技术和核心组件: 星号Bootstrap3 HTML5 JSSIP Java脚本jQuery查询卡迈利奥玛丽亚数据库节点JS PHP7 SocketIO 杀人的WebRTC...
坦率的说,我的鼠绘技术本来就不怎么样,长期的ai熏陶导致离开贝塞尔曲线什么都画不好。无论是painter还是今天SAI,都是以细致的笔触见长,应该比较适合有手写板的同志。 blotmap内是笔刷纹理效果的素材,对应...
杀人机器学习平台 作者:Webster Bei ,Joey Liang电子邮件: , 机器学习(ML),尤其是深度学习(DL),已成为科技公司的新宠。 实际上,机器学习已取代传统算法执行许多任务,其中最常见的包括内容推荐,面部...
中国人大都喜欢用武侠小说来比较软件开发,但是在实战武功中,只有葵花宝典才是最厉害的,也只有掌握了葵花宝典,才能称为“不败”。 但什么才是软件开发的葵花宝典? 让我们先从一些现象出发。我们的前提是,...
2. 时间条件:在交通运输活动中。 交通肇事罪不仅仅是在陆地上,它还可能发生在水域即内河和海上。 交通肇事罪的定罪量刑标准 (一) 交通肇事具有下列情形之一的,处 3 年以下有期徒刑或者拘役: 死亡 1 人或者重伤...
网络的有利的方面 1、可以利用网络技术解决工作学习生活中的问题,帮助他人解决一些困难,做一些对他人和社会有用的事情。 2、开阔视野,及时了解时事新闻,获取各种最新的知识和信息,方便人们生活、学习、工作。 ...
CS-避免杀人CS免杀,包括python版和C版本的(经测试Python打包的方式在win10上存在bug,无法运行,Win7测试无异常V1.0:目前测试可以过Defender /火绒的静杀+动杀,360还没测= =不想装360全家桶了,可以自行测试下...
结果这女神杀人上瘾,几乎使人类灭绝。神明为避免人类绝种,命令还活着的人准备大量啤酒哄骗女神喝下。 在欧洲,希腊人更加钟情于品尝葡萄酒,对啤酒提不起兴趣。罗马帝国也是如此,他们除了山寨希腊人文化与神明的...
"Quella"中译英为"杀手"的意思,亦有“杀人红尘中,脱身白刃里”的感觉,正符合这个项目的意境。 1.2 特性 简单:将源码下载后,启动Redis服务,修改jdbc.properties 即可直接在tomcat部署; 双视图:采用了Freemaker...
可挥舞起来就"杀人不见血",人人谈它色变。所以当我们使用它时一定要慎重:一方面可以利用它好的一面来帮助自己,另一方面要时刻提高警惕,树立保护自己的意识,防止被互连网这把"双刃剑""刺"伤。 网络安全征文 七...