【教】明明人家才是最萌的设计模式(10.27更新)
作者:dxxds
[i=s] 本帖最后由 dxxds 于 2013-10-27 10:55 编辑 自从第一个教程帖完结后,就偷懒没再发第二贴了。原因也是有的,其中最大的原因就是因为…… 因为空撸伤身什么的造成我一直没有再发新帖。 当然这次发了,也并不是说我就有了,我依然没有。你们是想说我有基友了么?#16t 你们!你们实在是!是!太!了解我了! 嗯,好基友也是没有的。 好了,先复习一下之前学过的一个内容吧:继承。 就是在情人节的那天,用一个父类指针创建一个子类对象,当然,这个父亲有好几个孩子,他可以随便选则是自己变成哪一个,或者轮着变一圈,然后…… 这就是策略啊策略!别说我无耻啊!这设计模式里就是这么写的! 然后就上来我们今天的第一课内容了:策略模式! 是有人想问我为啥不是从工厂模式开始讲?别的书都是从这个开始的…… 切!库达拉那医 …… 那样不就显得我很不专业么,显得我是抄他们的了么?所以我换一个。 这个策略模式,就是说会随着环境的变化,自己的策略也会有相应的变化。之前继承的课程里就用策略模式 今天出门 如果晴天,就去拿棒棒糖换萝莉。 如果是阴天,就去基友家撸PSP。 如果是下雪天,就自己撸代码。 先上这个熟悉的代码模板 #include<iostream> using namespace std; int main() { return 0; } 默认编译环境是WIN下的C-FREE和VS2005以上。(C-FREE好像用的就是我的VS编译器…… 主要是我的DEVCPP很严重的坏了,然后我又懒的修复…… 想来这点基础C++,语法应该都是一样的) 然后在这个基础上,添加一个纯洁的父亲类 class I_evil //纯洁类 I表示interface { public: I_evil(void){}; //构造函数,用来创造纯洁 virtual ~I_evil(void){}; //析构函数,当然是删除纯洁 virtual void strategy(void)=0; //虚函数,执行那纯洁的策略 }; 然后我们来写这第一个策略 class C_sunshine : public I_evil //公有方式继承父类,为什么公有,因为好用 { public: C_sunshine(){}; ~C_sunshine(){}; //是虚的,不过virtual可以不用写 void strategy(void) //也是虚的,virtual写不写都一样,一般要写,因为整齐,可读性好 { cout<<"去拿棒棒糖换萝莉"<<endl; } }; 注释写的很清楚了,我就接着写第二第三个了 class C_cloudy : public I_evil //第二个策略,继承纯洁 { public: C_cloudy(){}; ~C_cloudy(){}; void strategy(void) { cout<<"去基友家撸PSP"<<endl; } }; class C_snow : public I_evil //第三个策略 { public: C_snow(){}; ~C_snow(){}; void strategy(void) { cout<<"独自撸代码"<<endl; } }; 然后就该执行了 int main() { I_evil* Evil_Father = NULL; //一个纯洁的爸爸,main函数里,全程就只有这一个变量 cout<<"第一天,晴天"<<endl; //第一天开始了 Evil_Father = new C_sunshine; Evil_Father->strategy(); delete Evil_Father; //第一天结束了 cout<<"第二天,下雪"<<endl; //第二天来了 Evil_Father = new C_snow; Evil_Father->strategy(); delete Evil_Father; //第二天过去了 cout<<"最后一天,阴天"<<endl; //第三天也来了 Evil_Father = new C_cloudy; Evil_Father->strategy(); delete Evil_Father; //第三天结束了 system("pause>nul"); // stdlib.h 或者 cstdlib return 0; } 今天开斋节,小放假 内容简单易懂,看完回一下这个好帖子。 当然,不懂的就更要回一下这个0售价的好帖子了啊!!