其实设计模式可以学习很有趣,你并不需要有这么难啃旱地FOG对我来说,当然,这些都是健康的骨骼啃啃。

在本文中,建造者模式设计一个搞笑的一幕。根据这一模型来学习功夫的方法,哈哈。

基类的第一,设计。那么你必须有学习武术基础:

class 功夫
{
public:virtual void 看招() = 0;
};

有了基础之后。我们就能够学习高级功法了,这里学习降龙十八掌。O(∩_∩)O~。

list<int>容器。相当于记录下来的武功招式了。记住这些招式之后就能够開始学习了。小宝曰:绝世武功这么厚,看也得半年吧。

因为已经失传的缘故。这里仅仅有5招了。呵呵。

class 学习降龙十八掌 : public 功夫
{list<int> 招式;public:学习降龙十八掌(){}void 学习宝典(list<int> 宝典){招式.clear();招式 = 宝典;}void 看招(){auto it = 招式.begin();for ( ; it != 招式.end(); it++){switch (*it){case 1:亢龙有悔();break;case 2:飞龙在天();break;case 3:见龙在田();break;case 4:潜龙勿用();break;case 5:震惊百里();break;default:已失传();}}}void 亢龙有悔(){puts("\n亢龙有悔:\n说着左腿微屈。右臂内弯,右掌划了个圆圈。呼的一声,向外推去,手掌扫到面前一棵松树,喀喇一响。松树应手断折。\n 他左手划个半圆。右手一掌推出,正是生平得意之作“降龙十八掌”中的「亢龙有悔」");}void 飞龙在天(){puts("\n飞龙在天:\n洪七公把“降龙十八掌”中的第二招「飞龙在天」教了郭靖。\n这一招跃起半空,居高下击,威力奇大,郭靖花了三天工夫,方才学会。");}void 见龙在田(){puts("\n见龙在田:\n郭靖见他越逼越近,早有提防,当他右手离黄蓉身前尺许之际,左掌圆劲,右掌直势,使招「见龙在田」,挡在黄蓉身前。\n这一招纯是防御,却是在黄蓉与渔人之间布了一道坚壁。敌来则挡,敌不至则消于无形。

"); } void 潜龙勿用() { puts("\n潜龙勿用:\n郭靖暗叫:“不好!

”全身已感酸麻,危险中右手屈起食中两指。半拳半掌,向她胸口打去。那是「潜龙勿用」的半招。本来左手同一时候向里钩拿,右推左钩。敌人极难闪避,现下左腕被拿,仅仅得使了半招。"); } void 震惊百里() { puts("\n震惊百里:\n欧阳锋叫声:“好!”第二推又已迅速异常的赶到,前劲未衰,后劲继至。\n郭靖猛认为劲风罩上身来。心知不妙。一招「震惊百里」。也是双掌向前平推。这是降龙十八掌中威力极大的一招。"); } void 已失传() { puts("\n已失传\n"); } };

有了武功宝典之后。就能够由人进行学习啦,理论上谁都能够学习的,看有缘人是谁吧:

class 学习对象
{
public:virtual void 学亢龙有悔() = 0;virtual void 学飞龙在天() = 0;virtual void 学见龙在田() = 0;virtual void 学潜龙勿用() = 0;virtual void 学震惊百里() = 0;virtual void 学多了() = 0;virtual 功夫 *学成() = 0;
};

这个有缘人就是郭大侠啦:

class 郭靖 : public 学习对象
{学习降龙十八掌 *秘籍;list<int> 招式;
public:郭靖(){秘籍 = new 学习降龙十八掌;}void 学亢龙有悔(){招式.push_back(1);}void 学飞龙在天(){招式.push_back(2);}void 学见龙在田(){招式.push_back(3);}void 学潜龙勿用(){招式.push_back(4);}void 学震惊百里(){招式.push_back(5);}void 学多了(){招式.push_back(6);}功夫 *学成(){秘籍->学习宝典(招式);return 秘籍;}~郭靖(){delete 秘籍;}
};

然后是执行:

void 打功夫()
{学习对象 *郭大侠 = new 郭靖;郭大侠->学飞龙在天();郭大侠->学见龙在田();郭大侠->学亢龙有悔();郭大侠->学潜龙勿用();郭大侠->学震惊百里();郭大侠->学多了();功夫 *降龙掌 = 郭大侠->学成();降龙掌->看招();
}

最后执行结果:

总结其思想:

已经有了一本武功秘籍了-”学习降龙十八掌“,可是不一定要所有学完的,所以书中记录了各种招式,能够让人选择,并使用容器list<int>记录人的选择。

这个选择是由觉得做出的-郭靖,选择好之后,再终于生成最后的武功招式。

这里的-看招函数就是依照list<int>的内容一招一招打出去的。

呵呵,本程序是在vs2012上执行的,因为是全中文。故此vs6肯定是不能执行的了。

版权声明:笔者靖心脏。景空间地址:http://blog.csdn.net/kenden23/,只有经过作者同意转载。

转载于:https://www.cnblogs.com/zfyouxi/p/4845537.html

design pattern Builder 生成器设计模式相关推荐

  1. design pattern Builder 建造者设计模式

    其实设计模式可以学的很有意思的,不需要非得如此硬枯燥地去啃FOG的大部头,当然这些骨头啃啃也健康. 本文利用建造者模式设计一个有趣的场景,一个利用这个模式去学功夫的过程,呵呵. 首先设计一个基类,学功 ...

  2. Design Pattern - Builder(C#)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Defi ...

  3. Flyweight Design Pattern 共享元设计模式

    就是利用一个类来完毕多种任务,不用每次都创建一个新类. 个人认为这个设计模式在C++里面.好像能够就使用一个函数取代,利用重复调用这个函数完毕任务和重复利用这个类,好像差点儿相同. 只是既然是一个设计 ...

  4. 几种常用的设计模式 (Design Pattern)

    文章目录 设计模式(Design Pattern) 一.设计模式的分类 1. 基础型模式 (Fundamental Pattern) 2. 创建型模式 (Creational Pattern) 3. ...

  5. Design Pattern: Visitor and Acyclic Visitor and their differences

    Design Pattern 笔记 Visitor and Acyclic Visitor 小记 extensibility, behavioral 前言 在Design Pattern上面学习设计模 ...

  6. 生成器设计模式(Builder Design Pattern)[论点:概念、图示、示例、框架中的应用、场景]

    文章目录 概念 相关图示 代码示例 框架中的应用 场景 多个生成器(Concrete Builder): 单个生成器 概念 生成器设计模式(Builder Design Pattern)是一种创建型设 ...

  7. 说说设计模式~大话目录(Design Pattern)

    回到占占推荐博客索引 设计模式(Design pattern)与其它知识不同,它没有华丽的外表,没有吸引人的工具去实现,它是一种心法,一种内功,如果你希望在软件开发领域有一种新的突破,一个质的飞越,那 ...

  8. 设计模式(Design Pattern)

    简介 设计模式(Design Pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是众多软件开发人 ...

  9. 设计模式(Design Pattern)详细整理(含思维导图)

    设计模式(Design Pattern) 设计模式(Design pattern)代表了最佳的实践,是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是众多软件开发人员经过相当长的一 ...

最新文章

  1. 微信作为一种提供即时通讯服务器,Golang 写的即时通讯服务器 im(服务组件形式)...
  2. ScrollView内嵌ListView或GridView的滑动处理
  3. 【pyqt5学习】——最新版:配置external tools(designer、pyuic、pqrcc)
  4. 详解nohup和 区别
  5. PHP的html实现xpath解析,php用xpath解析html的代码实例讲解
  6. Squid优化完全手册(2)
  7. 如何去除图片连接的边框线
  8. 火山安卓自定义组件封装源码讲解
  9. ECharts数据可视化:入门、实战与进阶干货分享(GitHub 44.5k)
  10. 网上书城项目学习版(五)
  11. 63岁老太太不远千里来传销 被玩坏的IPFS矿机游戏
  12. The firefox installs flashplugin for Linux
  13. vs2019 vs2022番茄助手重新安装失败问题处理
  14. steam饥荒mod编写,基础的lua语言学习笔记——第一期
  15. android仿IT之家、炫酷水波纹、Kotlin MVP项目、后台模拟点击、蜂巢迷宫小游戏等源码
  16. 将i am a student转换成 student a am i
  17. 推荐一些亲测实用的小软件
  18. JAVA配置多源数据库
  19. jQuery——jQuery学习笔记(完整版)
  20. MT6701磁编码器使用指南,14Bit单圈绝对值,I2C stm32 HAL库读角度,兼容AS5600

热门文章

  1. AWS实例3T磁盘初始化分区及docker环境部署
  2. 中国计算机软件法,计算机软件专利申请中国快律法务攻略.pdf
  3. 章节十六:复习与反爬虫
  4. 大学计算机基础教程excel实验报告,大学计算机基础教程excel实验报告.doc
  5. 笔记本电脑无法搜索到wifi
  6. 解决电脑无法运行 Mscomctl.ocx控件 常见的4个问题
  7. AutoJs学习-2048全自动
  8. 谷歌浏览器开发者工具鼠标箭头变成小圆点了
  9. 基于STM32(HAL库)的水质检测(浑浊度、PH值、温度、手机APP显示、wifi上云)
  10. Python使用pyecharts库制作桑基图