今天晚上2012年欧洲杯决赛(西班牙 VS 意大利),作为一名铁杆球迷,偶当然不会错过(请不要让我来预测比分,我不是章鱼,更何况这两个队我都非常喜欢,输赢我都很淡定,),在静候决赛的这段时间,突然萌发一个想法,将设计模式跟足球联系到一起写点啥,就像当年那篇知名度极高的《追MM与设计模式》一样,以供娱乐!,话不多说,即刻动手!

    创建型模式

(1) 工厂方法模式:近年来大型足球比赛(世界杯和欧洲杯)的指定用球都是阿迪达斯的(据说是签了合同的),当然Adidas足球是由Adidas公司生产的,除此之外,Nike公司也生产Nike足球,KAPPA(背靠背)公司也生产背靠背足球,足球生产商是工厂,足球是产品。增加一种新的足球品牌,对应需要增加一个新的生产商。

工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式使一个类的实例化延迟到其子类。

 (2) 抽象工厂模式:Adidas工厂除了生产Adidas足球外,还生产Adidas球鞋、球服、球袜(adidas is all in);Nike工厂也生产Nike足球、球鞋、球服、球袜等,在此,Adidas和Nike是工厂,同一品牌的足球、球鞋、球服、球袜构成了一个产品族,一个工厂可以生产一族产品,而不只是一种产品。

抽象工厂模式(Abstract Factory): 提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。

      (3) 单例模式:在比赛过程中(在场上的,替补不算)每个球队的守门员有且仅有一个,肯定不会有两个穿相同球衣的守门员同时上场,这不是单例吗?如果布冯或者卡西能出场,还有哪个意大利或者西班牙守门员敢去跟他们抢首发呢??布冯你是唯一的!卡西,你也是!当然,皮尔洛也是,哈维也是,小法也是,巴神也是......原来有这么多单例。

单例模式(Singleton): 保证一个类仅有一个实例,并提供一个访问它的全局访问点。

 (4) 建造者模式:如果我要一套完整的意大利国家队足球装备(除球鞋,这个貌似没有统一):包括球衣、球裤、球袜,只需跟某专卖店销售人员说一下(想象,想象......):我要一套意大利队的足球装备,大小为XL,返回给你的是一套经典的蓝色意大利国家队队服,包括蓝色的足球袜;当然你的朋友可以说他要一套西班牙队的足球装备,返回给他的是一套红色的斗牛士足球装备,袜子,当然也是红的。在此,销售人员相当于建造者模式中的指挥者(Director),他向用户返回一个复杂产品(足球装备),该复杂产品由多个部件组成(球衣、球裤、球袜等),用户无须关心具体组装过程即可得到一个完整的复杂产品。

建造者模式(Builder): 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

(5) 原型模式:无论是足球还是球服,都是批量生产的,例如2012年欧洲杯的指定用球Adidas 探戈12(Tango 12),先做一个原型(模板),然后照着生产就好了,想要多少就生产多少。

原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。

【作者:刘伟 http://blog.csdn.net/lovelion】

设计模式与足球(一)相关推荐

  1. 设计模式与足球(三)

         行为型模式(上)       (13) 职责链模式:布冯手抛球给基耶利尼.基耶利尼传给皮尔洛.皮尔洛带球过人之后将球直塞给快速插上的巴洛特利,巴洛特利倒钩射门,球进了,球进了,又是巴洛特利, ...

  2. 设计模式与足球(四)

        行为型模式(下)    意大利昨晚太杯具了!!!不说了,继续把最后一部分写完.     (18) 备忘录模式:足球是圆的,一切皆有可能发生.要是有后悔药的话,如果能回到昨晚2012年欧洲杯决赛 ...

  3. 史上最全设计模式导学目录(完整版)

    圣诞献礼! 2012年-2013年,Sunny在CSDN技术博客中陆续发表了100多篇与设计模式学习相关的文章,涵盖了七个面向对象设计原则和24个设计模式(23个GoF设计模式 +  简单工厂模式), ...

  4. DP:***24种设计模式--转自刘伟

    转自于高人的文章:http://blog.csdn.net/lovelion/article/details/17517213 2012年-2013年,Sunny在CSDN技术博客中陆续发表了100多 ...

  5. (良心)世上最全设计模式导读(含难度预警与使用频率完整版)

    良心干货,感谢大佬的博客,让俺们这些菜鸟能飞起来!! 转载自:http://blog.csdn.net/lovelion/article/details/17517213 圣诞献礼! 2012年-20 ...

  6. 非常全的23种设计模式详解

    基础知识 设计模式概述 从招式与内功谈起--设计模式概述(一):设计模式从何而来? 从招式与内功谈起--设计模式概述(二):设计模式是什么? 从招式与内功谈起--设计模式概述(三):设计模式有什么用? ...

  7. Java 设计模式学习推荐

    基础知识 设计模式概述 从招式与内功谈起--设计模式概述(一):设计模式从何而来? 从招式与内功谈起--设计模式概述(二):设计模式是什么? 从招式与内功谈起--设计模式概述(三):设计模式有什么用? ...

  8. 非常全的23种设计模式

    非常全的23种设计模式详解,收藏了 2016年09月12日 14:21:34 阅读数:3382 源博文出处:http://blog.csdn.net/lovelion/article/details/ ...

  9. 游戏AI算法相关文章合集

    ​​​​​​​在AI寻路决策中运用势力图(Influence Map) – AI分享站 行为树(Behavior Tree)实践(1)– 基本概念 – AI分享站 游戏角色并行状态机之boost::m ...

最新文章

  1. 布尔值_Python基础知识点手册——布尔值及布尔运算
  2. Redis Primer(1)基于JedisPool的Redis hset并发性能测试 - @钟超 · 技术博客专栏 - 博客频道 - CSDN.NET...
  3. 点击延迟_解决移动端浏览器点击延迟300ms的问题——FastClick用法
  4. Java基础知识强化之集合框架笔记56:Map集合之HashMap集合(HashMapString,Student)的案例...
  5. 论文浅尝 - ICLR2020 | You Can Teach an Old Dog New Tricks!关于训练知识图谱嵌入
  6. K8S+KubeSphere之Helm安装
  7. 转:如何用EXCEL表运用FV函数
  8. 使用Eclipse构建GeoTools项目
  9. 奥鹏19春计算机应用基础,19春西南交《计算机应用基础》在线作业二(答案)-...
  10. 在“BROWSEINFO”产生的“浏览文件夹”对话框中加入“新建文件夹”按钮
  11. 04_部署 etcd 集群
  12. ⒔Bash 内部命令
  13. 腾讯文件和微云服务器,网盘Web客户端对比:腾讯微云支持32GB单文件上传
  14. 怎么为小数据集划分训练集和测试集
  15. 十八万字《python从零到精通教程》第二版,贴心保姆教你从零变大神,学不会找我
  16. react使用@tweenjs/tween.js实现数字动态增长
  17. 人机协作机器人发展趋势_目前国内机器人发展存在三大困境,人机协作被广泛关注有以下几点原因...
  18. 拼多多的商业模式与产品玩法分析
  19. 如何利用计算机处理,旧电脑如何处理?去卖回收教你几招!榨干闲置电脑最后一丝价值!...
  20. 频率选择性衰落、时间选择性衰落

热门文章

  1. 使用随机森林进行特征选择
  2. 根据三条边判断三角形类型
  3. i913980hx和i913900hx区别 酷睿i9 13980hx和i9 13900hx选哪个
  4. 以雅酷网为实例从技术上说说dedecms的seo优化要注意哪些?
  5. 基于PLC的糖果包装机控制系统如何进行远程上下载
  6. Python操作visio画图
  7. 计算机基础算销售排名公式,办公人员必备12个函数公式(统计排名等),提高工作效率...
  8. python画厢式图_Python数据可视化:箱线图多种库画法
  9. tweener 简介
  10. hmailserver怎么搭建php,hMailServer设置