杀人中的技术

原创 2006年11月23日 16:37:00
  
古往今来,杀手无数,杀人手段也是千奇百怪,从荆轲的直接用刀捅到《这个杀手不太冷》里面的狙击枪,甚至直接用伞碰你一下你都会挂的杀人手段,真是令人大开眼界,但是我今天要说的不是如何如何杀人,也不是怎样玩杀人游戏,而是我要说的设计模式之-Bridge设计模式。
在面向对象设计的基本概念中,对象这个概念实际是由属性和行为两个部分组成的,属性我们可以认为是一种静止的,是一种抽象,一般情况下,行为是包含在一个对象中,但是,在有的情况下,我们需要将这些行为也进行归类,形成一个总的行为接口,这就是桥模式的用处
面向对象的编程就是把我们把需要做的事情合理的抽象化,最大化的适应变化。看看上面说的杀手,“杀手”是一个集合名词,代表着一类人。佣金高,技术好的我们叫他“职业杀手”;佣金一半,杀人手段一般,我们叫“普通杀手”;而那些笨笨的,完全是一时冲动的杀手还没杀着人就被对手打晕了我们叫他“愚蠢杀手”,这类杀手甚至有点搞笑的含义:)。这些杀手为什么这么去分类,完全取决于他们的技术高低,而不管他们用什么手段去杀(即使用一根草,高手也可以快速置人于死地)。这个潜在的所谓技术就是他们本质的区别,当然成为我们区别他们的标准,而如何杀人仅仅是他们的行为而已。
现在可以看清一点了,对于对象而言,属性是它的静态特征,而行为是他的动态特征,有时候我们不仅仅需要把特征抽象出来,而且需要把行为抽象出来,比如:对于杀手,技术的高低可以将他们进行分类,这是一个属性的抽象,而杀人手段千奇百怪,这是一个行为的抽象。
现在言归正传,有上面三类杀手,而杀人手段暂定为“枪杀”,“火杀”两种我们应该如何去设计杀手这个类。
1. 显然“杀手”是基类,三类杀手是子类
2. 杀手杀人这个动作显然可以通过多种手段完成,好吧,也是一个抽象,这个是行为的抽象。
我是这么设计的:
杀手类
/**
 *杀手的封装类
 *@authorzxy
 *
 */
publicabstractclass Killer
{
    private Kill killOperation;
    public Killer(Kill killOperation )
    {
       this.killOperation=killOperation;
    }
    publicabstractvoid doKill();
    public Kill getKillOperation()
    {
       returnkillOperation;
    }
 
杀人
/**
 *杀人的动作,抽象为一个接口
 *@authorzxy
 *
 */
publicinterface Kill
{
 publicvoid kill();
}
}
三个杀人的子类:
    职业杀手类
/**
 *职业杀手,杀人不见血,非常快。
 *@authorzxy
 *
 */
publicclass ProfessionalKiller extends Killer
{
 
    public ProfessionalKiller(Kill killOperation)
    {
       super(killOperation);
       // TODO Auto-generated constructor stub
    }
 
    @Override
    publicvoid doKill()
    {
     Kill killOp=getKillOperation();
     System.out.print("我是职业杀手,看我的:");
     killOp.kill();
     System.out.println("快速搞定,闪人,嘻嘻!");
 
    }
 
}
普通杀手类
/**
 *一般杀手,只是杀人费点时间而已
 *@authorzxy
 *
 */
publicclass NormalKiller extends Killer
{
 
    public NormalKiller(Kill killOperation)
    {
       super(killOperation);
       // TODO Auto-generated constructor stub
    }
 
    @Override
    publicvoid doKill()
    {
       Kill killOp=getKillOperation();
       System.out.print("我是普通杀手,看我的:");
       killOp.kill();
        System.out.println(",总算完成任务,回去向boss报告去!");
 
    }
 
}
笨杀手类
/**
 *笨杀手,杀的慢而且被警察抓住了
 *@authorzxy
 *
 */
publicclass StupidKiller extends Killer
{
 
    public StupidKiller(Kill killOperation)
    {
       super(killOperation);
       // TODO Auto-generated constructor stub
    }
 
    @Override
    publicvoid doKill()
    {
       Kill killOp=getKillOperation();
       System.out.print("我是一个笨笨的杀手,看我的:");
        killOp.kill();
       System.out.println("怎么老杀不了,完了,警察来了,555!!");
 
    }
}
两种杀人手段:
 枪杀
 /**
 *枪杀,比较现代的杀人手段
 *@authorzxy
 *
 */
publicclass ShootKill implements Kill
{
   publicvoid kill()
   {
       System.out.print("瞄准...,射击-->>>");
   }
}
火杀(就是用火杀人)
/**
 *纵火烧人,比较残忍的杀人方式
 *@authorzxy
 *
 */
publicclass BurnKill implements Kill
{
 
    publicvoid kill()
    {
        System.out.print("点火...,我烧我烧我烧烧烧,");
      
    }
 
}我们来测试一下杀手的表现:
publicclass TestKiller
{
    /**
     *@paramargs
     */
    publicstaticvoid main(String[] args)
    {
     Kill burnKill=new BurnKill();
     Kill shootKill=new ShootKill();
     Killer professionKiller1=new ProfessionalKiller(burnKill);
     Killer professionKiller2=new ProfessionalKiller(shootKill);
     Killer stupidKiller =new StupidKiller(shootKill);
     System.out.println("下面我们看看杀手们的表演:");
     professionKiller1.doKill();
     stupidKiller.doKill();
     professionKiller2.doKill();
    }
 
}
看看结果:
下面我们看看杀手们的表演:
我是职业杀手,看我的:点火...,我烧我烧我烧烧烧,快速搞定,闪人,嘻嘻!
我是一个笨笨的杀手,看我的:瞄准...,射击-->>>,怎么老杀不了,完了,警察来了,555!!
我是职业杀手,看我的:瞄准...,射击-->>>,快速搞定,闪人,嘻嘻!
正如预料的一样,杀手们使用不同的手段去表现了他们的杀人技术。
 
可以很清晰的看到在类的设计里面我们将行为抽象出来了,这种设计的好处在于可以很方便的适应行为的扩充时和属性的扩充,比如我们现在出现了一个“投毒的高手”只需要增加一个“投毒”的杀人手段就可以了,反过来,如果将属性和行为绑定,或者单单是把不同杀手(比如“职业杀手”)进行扩充为“投毒高手”,“射击高手”,如此一个增加一种手段的各个级别的杀手将是一间不容易的事。
 这就是“bridge“模式的设计初衷-抽象行为。

杀人中的技术

  古往今来,杀手无数,杀人手段也是千奇百怪,从荆轲的直接用刀捅到《这个杀手不太冷》里面的狙击枪,甚至直接用伞碰你一下你都会挂的杀人手段,真是令人大开眼界,但是我今天要说的不是如何如何杀人,也不是怎样...
  • zhaonjtu
  • zhaonjtu
  • 2006-11-23 16:37:00
  • 1591

昨天晚上公司软件开发部出去杀人了~~~~

偶喜欢杀人啊,特别喜欢做杀手,昨天 晚上连续2把做杀手第一次就把警察杀了,娃哈哈~~~偶们玩的是杀手V1.0版,就是只有一个法官,和一个警察的...
  • jojoaric
  • jojoaric
  • 2006-09-16 19:27:00
  • 826

杀毒与免杀技术详解之一:介绍

一直以来都对系统安全很感兴趣,各种跌跌撞撞的学习,看了不少资料,正好写文章分享知识。杀毒软件现在家家户户都在用,我这一装系统就带着360这个必备软件。我时常会进行”体检”,让自己的电脑免受病毒的侵扰,...
  • zhuofeilong
  • zhuofeilong
  • 2015-07-31 13:52:26
  • 1373

传说中的木马免杀技术

color=#2e8b57]文章出于网络作者不详,曾见作者发布于黑客防线,估转载此文!首先来简单了解一下杀毒软件查杀病毒的原理,当前杀毒 软件对病毒的查杀主要有特征代码法和行为监测法。其中前一个比较方...
  • pl2597758
  • pl2597758
  • 2008-05-19 16:01:00
  • 1141

程序员杀人必备---排除法

先回答上一篇的问题,上一篇说到,如果自己看不到不顺眼的东西,先反省自己是不是错了。这算不算逻辑思维。我定义的逻辑思维,是认识与验证世界的思维。站在存在即合理的角度,每一件东西的存在,就有其合理性。看不...
  • sinat_34279882
  • sinat_34279882
  • 2016-03-14 10:03:10
  • 275

<em>杀人</em>游戏源代码

下载 &gt; 开发<em>技术</em> &gt; C++ &gt; <em>杀人</em>游戏源代码 <em>杀人</em>游戏源代码 2012-05-29 上传大小:181KB <em>杀人</em>游戏源代码 就是那个约瑟夫环!在数据结构中最常见的一个例子。...
  • 2018年04月05日 00:00

[杀不死的秘密:反汇编揭密黑客免杀变种技术].崔承琦.扫描版.pdf

  • 2013年08月14日 14:18
  • 101.51MB
  • 下载

杀不死的秘密-反汇编揭露黑客免杀变种技术.pdf

  • 2013年12月08日 19:42
  • 18.54MB
  • 下载

出大事了!传华为被罚5亿,因技术人员误操作

点击上方“程序员大咖”,选择“置顶公众号”关键时刻,第一时间送达!广西移动重大故障,80万南宁移动用户手机失联一事仍在发酵中。据微信号“云头条”此前报道,发生于 9 月 8 日的重大通信事故,起因为华...
  • Px01Ih8
  • Px01Ih8
  • 2017-09-23 00:00:00
  • 1676
收藏助手
不良信息举报
您举报文章:杀人中的技术
举报原因:
原因补充:

(最多只允许输入30个字)