• 设计模式与足球(一)创建型模式


     创建型模式

          (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

  • 相关阅读:
    Qt 2D绘图之五:图形视图框架的结构和坐标系统
    (转)x264 编码流程
    (转)x264代码详细阅读之x264.c,common.c,encoder.c
    使用ffmepg的lib库调试,debug版本下调试无问题,但release版本会出现跑飞的现象
    (转)视频码率,帧率和分辨率的联系与区别
    (转)windows平台时间函数性能比较QueryPerformanceCounter,GetTickCount,ftime,time,GetLocalTime,GetSystemTimeAsFileTime
    (转)x264源码分析(1):main、parse、encode、x264_encoder_open函数代码分析
    转)x264重要结构体详细说明(2): x264_image_t、x264_picture_t、x264_nal_t
    (转)x264重要结构体详细说明(1): x264_param_t
    (转)SCR, PCR, ESCR, PTS, DTS
  • 原文地址:https://www.cnblogs.com/lfxiao/p/6813740.html
Copyright © 2020-2023  润新知