古往今来,杀手无数,杀人手段也是千奇百怪,从荆轲的直接用刀捅到《这个杀手不太冷》里面的狙击枪,甚至直接用伞碰你一下你都会挂的杀人手段,真是令人大开眼界,但是我今天要说的不是如何如何杀人,也不是怎样玩杀人游戏,而是我要说的设计模式之-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
- 浏览 3249
- 评论(2)
- 论坛回复 / 浏览 (2 / 3033)
- 查看更多
相关推荐
在"WebKillerGame"这个文件名中,我们可以推测这可能是一个基于Web的杀人游戏实现,使用Web技术(如HTML、CSS、JavaScript等)构建,并可能结合后端服务器(如Node.js、Python Flask/Django等)来处理网络通信和业务...
【ASP.NET WCF 杀人游戏】是一款基于ASP.NET技术和Windows Communication Foundation(WCF)框架开发的在线多人交互游戏。这款游戏模拟了经典的“杀人游戏”玩法,玩家可以在网络上进行实时交流、投票和推理,体验...
总的来说,“杀人online网站源码”是一个涵盖多个技术领域的项目,对开发者的要求较高,需要综合运用多种技能和知识。对于初学者,可以通过研究这个项目来学习网站开发的全貌,而对于有经验的开发者,可以提供一个...
关于杀人游戏规则.pdf
这与人们熟知的“杀人游戏”在一定程度上有着相似的运行机制,玩家在游戏中扮演不同角色,通过判断和分析来达到最终目标。将这种角色扮演类比到SOA的实施中,能够更直观地理解其中涉及的组织行为和协作机制。 在...
综上所述,这个“杀人显示杀字插件.zip”是一个专为Counter-Strike 1.5设计的游戏插件,通过AMXX和SourceMod技术实现了在游戏内击杀事件发生时展示特殊效果(如“杀”字)的功能。它包含两个核心脚本文件(175_death...
标题中的“26国AI技术领袖上书要求联合国禁止‘杀人机器人’的研发与使用”揭示了一个全球性的议题,涉及到人工智能(AI)技术在军事领域的应用,特别是自动化的致命性自主武器系统(LAWS,Lethal Autonomous ...
对于iOS开发者来说,这是一个很好的学习案例,可以帮助他们深入理解iOS应用开发,尤其是游戏开发的相关技术和流程。 首先,我们要了解iOS开发的基础知识,这包括Objective-C或Swift编程语言。《IOS杀人游戏》可能...
在这款C#实现的杀人游戏中,开发者利用编程语言的强大功能,构建了复杂的逻辑系统,模拟了游戏中的各种规则和交互。 接下来,我们来看看LINQ。LINQ是C#中的一项创新技术,它提供了一种统一的方式来查询各种数据源,...
面临市场同质化严重、技术门槛低、同类产品众多以及消费者品牌认知度低等多重挑战,企业采用了“借势用势,借刀杀人”的策略。 首先,“数码通”的命名策略体现了品牌对消费者既有认知的巧妙借力。通过让人容易联想...
6. **自然奥秘**:“巨石杀人”事件成为一个未解之谜,提醒我们在探索未知自然现象时要谨慎行事,同时也展示了自然界中可能存在的、超出人类认知的潜在危险。 这个故事揭示了自然界中的未知力量和潜在危险,同时也...
6. 杀人游戏系列:在描述中提到的杀人游戏系列可能是指一种基于C#实现的文字冒险或策略游戏。这类游戏涉及事件驱动编程、状态机设计以及可能的AI算法,为开发者提供了一个实践面向对象编程和游戏逻辑设计的机会。 7...
根据最近全国范围内出现连环幼儿园杀人案件的分析,针对幼儿园的特殊环境我们公司提出了自己的构想,实现幼儿园环境真正走上安全:幼儿园是一个很脆弱的环境,很需要有一套安全有效的系统去管理。门口出入人员管理...
文档内容描述的是关于聚会的作文,描述了孩子们参加生日聚会的情景,包括送礼物、唱歌、吃蛋糕以及玩“杀人”游戏等活动,这些都是文学创作或生活故事,并非技术相关的话题。因此,无法从中提取出与技术领域相关的...
3. 中医技术:文中提到水针和火针的组合治疗技术,即中医针刺技术中的不同手法,水针指使用液体药物通过针灸方法注入体内,而火针则涉及到用火烧灼针具来处理某些疾病。 4. 传承与坚持:神针王坚持祖训,将水火神针...
使用的代码中还实现了另外三种技术: 基于总计的方法(TMKPT) 基于加法的方法(AMKPT) 无需局部搜索的评估算法要运行MKEA-TCP,请运行Main.java类。 您可以在Main.java类文件中设置变异报告文件。 目前生成5个...
随着技术的发展,低成本的机器人可以通过简单的设备和网络代码来制造,甚至有可能制造出能够自动杀人的机器人。这表明,随着技术的进步,机器人在战争和其他领域中的应用将越来越广泛,技术的双刃剑效应使得技术的...
未来,对于机器人技术的规范、监管和伦理标准的建立将变得至关重要,以防止类似“机器人闯祸”甚至“机器人杀人”等事件的再次发生。 总之,《机器人又闯祸了》这篇文章通过分析机器人技术在实际应用中遇到的诸多...
例如,过度依赖这些工具可能降低学生的独立思考能力,算法的决定性可能抹杀人的情感和个性差异,而技术的不透明性可能导致决策过程缺乏公正性。 为规避这些风险,我们需要坚守教育的理性遵循,重视培养教育主体的...
正如“舌上有龙泉,杀人不见血”的警示,语言的力量既可以促进理解,也可能导致误解甚至冲突。沟通的重要性体现在以下几个方面: 1. 建立和维护人际关系:通过有效的沟通,我们可以与他人建立信任,增进友谊,降低...