• design pattern Builder 生成器设计模式


    其实设计模式可以学习很有趣,你并不需要有这么难啃旱地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("
    亢龙有悔:
    说着左腿微屈。右臂内弯,右掌划了个圆圈。呼的一声,向外推去,手掌扫到面前一棵松树,喀喇一响。松树应手断折。
     他左手划个半圆。右手一掌推出,正是生平得意之作“降龙十八掌”中的「亢龙有悔」");
    	}
    
    	void 飞龙在天()
    	{
    		puts("
    飞龙在天:
    洪七公把“降龙十八掌”中的第二招「飞龙在天」教了郭靖。
    这一招跃起半空,居高下击,威力奇大,郭靖花了三天工夫,方才学会。");
    	}
    
    	void 见龙在田()
    	{
    		puts("
    见龙在田:
    郭靖见他越逼越近,早有提防,当他右手离黄蓉身前尺许之际,左掌圆劲,右掌直势,使招「见龙在田」,挡在黄蓉身前。
    这一招纯是防御,却是在黄蓉与渔人之间布了一道坚壁。敌来则挡,敌不至则消于无形。

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

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



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

    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/,只有经过作者同意转载。

  • 相关阅读:
    织梦内容模型自定义字段设置一个随机数
    网页禁止右键查看源码屏蔽键盘事件
    面试官:如何防止 Java 源码被反编译?我竟然答不上来。。
    Elastic Job 同城主备、同城双活,高可用必备~
    再见,Spring Security OAuth!!
    怎么让 Linux 进程在后台运行?
    30 个 ElasticSearch 调优知识点,都给你整理好了!
    Spring Boot 2.5.4 发布,2.2.x 正式结束使命!
    移动端与服务器端之间的 token 怎么设计?
    最新数据库排行出炉,SQL Server 暴跌。。
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4845537.html
Copyright © 2020-2023  润新知