欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

从战神金刚看组合模式

程序员文章站 2022-04-22 16:51:32
...

    相信不少人小时候都喜欢倒腾机器人或者四驱车之类的玩具。在我们这一辈的儿时,所有对此类玩具的印象来自于电视机。其实代表机器人的名作有很多,最出名的的是变形金刚这部经典。其实除了变形金刚还有一句台词相信能唤起我们儿时的回忆,那就是:我来组成头部!

    没错,如果你跟我生活在相同的年代,你就会认出这是战神金刚第一部的台词!下面这副图是否能唤起你的回忆:)
   
从战神金刚看组合模式
            
    
    博客分类: 设计模式 设计模式组合模式组合CompositePattern
 
 
    今天要讲的主题就和上面的图片息息相关。我想先来介绍一下战神金刚的构造。^^在正常状态下,战神金刚是拆分成了15个不同的小机器人存在的。这15个小机器人有可以在天空飞行的飞机机器人,也有在水路航行的轮船机器人,更有在陆地上开的小车机器人。总之是,海陆空齐全。
    在执行一些特殊任务的时候,小机器人可以部分组成一个机器人合体,如下图所示,下图组成了三个中型的机器人合体,分别是海陆空三队。

从战神金刚看组合模式
            
    
    博客分类: 设计模式 设计模式组合模式组合CompositePattern
 
   如果碰到一些非常BT的boss,中型机器人合体搞不定的时候,战神金刚的表演时间就到了。没错!15个小机器会全体组合成战神金刚,进入表演时刻,神挡杀神。如下图

从战神金刚看组合模式
            
    
    博客分类: 设计模式 设计模式组合模式组合CompositePattern
 
    介绍了这么多,是该进入主题的时候了。那么,我们如何用面向对象的方式来描述战神金刚呢。
    如果不使用任何设计模式,按照我的思维逻辑,结构大概会是下图这个样子
    
从战神金刚看组合模式
            
    
    博客分类: 设计模式 设计模式组合模式组合CompositePattern
 
    使用组合模式后,结构如下图所示
    
从战神金刚看组合模式
            
    
    博客分类: 设计模式 设计模式组合模式组合CompositePattern
 
    从上图看出使用组合模式的最大不同就是抽象了机器人合体这个class。并且把装入机器人和弹出机器人方法剥离到这个class中
    这样如果以后有新的合体类型,比如混合战队,直接继承机器人合体即可,非常利于扩展。
 
    另外,还有一个额外的好处,机器人合体和小机器人都属于机器人,这样的话,对于使用者来说,会非常方便。
    关于如何用代码实现组合模式,网上有很多文章,使了用各种语言,不管是C++,C#,Java还是动态语言来说明和讲解。都讲的很多,这里就不再重复。
    

    最后来总结一下组合模式的优点:

    1、组合模式定义了组合(合体)的概念,将组合所需要的相关方法单独抽象,利于扩展。

    2、将组合(合体)与个体同等对待,会非常便于使用者使用。

 

      版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 从战神金刚看组合模式
            
    
    博客分类: 设计模式 设计模式组合模式组合CompositePattern
  • 大小: 23.6 KB
  • 从战神金刚看组合模式
            
    
    博客分类: 设计模式 设计模式组合模式组合CompositePattern
  • 大小: 15.5 KB
  • 从战神金刚看组合模式
            
    
    博客分类: 设计模式 设计模式组合模式组合CompositePattern
  • 大小: 11 KB
  • 从战神金刚看组合模式
            
    
    博客分类: 设计模式 设计模式组合模式组合CompositePattern
  • 大小: 57.1 KB
  • 从战神金刚看组合模式
            
    
    博客分类: 设计模式 设计模式组合模式组合CompositePattern
  • 大小: 22.6 KB
  • 从战神金刚看组合模式
            
    
    博客分类: 设计模式 设计模式组合模式组合CompositePattern
  • 大小: 29.8 KB