1、迭代器模式

里面有一个对集合的引用;
这个迭代器是对谁创建的,这个迭代器就持有谁(这个集合)的引用!

2、具体实现

(1)、代码如下

#include<iostream>usingnamespacestd;#defineSIZE5classMyIterator{//抽象的迭代器public:virtualvoidFirst()=0;virtualvoidNext()=0;virtualboolisDone()=0;virtualintCurrentItem()=0;private:};classAbstract{//抽象的集合类public:virtualMyIterator*createIterator()=0;virtualintgetItem(intindex)=0;virtualintgetSize()=0;protected:};classConIterator:publicMyIterator{//具体的迭代器public:ConIterator(Abstract*ag){p=ag;currentIndex=0;}virtualvoidFirst(){currentIndex=0;//让当前游标回到位置0;}virtualvoidNext(){if(currentIndex<p->getSize())currentIndex++;}virtualboolisDone(){returncurrentIndex==p->getSize();}virtualintCurrentItem(){returnp->getItem(currentIndex);}private:intcurrentIndex;Abstract*p;};classJh:publicAbstract{public:Jh(){for(inti=0;i<SIZE;i++){arr[i]=i+100;}}virtualMyIterator*createIterator(){returnnewConIterator(this);//让迭代器持有一个集合的引用!!!}virtualintgetItem(intindex){returnarr[index];}virtualintgetSize(){returnSIZE;}private:intarr[SIZE];};intmain(void){Abstract*ag=newJh;MyIterator*it=ag->createIterator();for(;!(it->isDone());it->Next()){cout<<it->CurrentItem()<<"";}cout<<endl;deleteag;deleteit;return0;}

(2)、运行结果



3、模板模式

提前将业务逻辑做好了,就是同一种模板;


4、具体实现

(1)、代码实现

#include<iostream>usingnamespacestd;classMakeCar{public:virtualvoidMakeHead()=0;virtualvoidMakeBody()=0;virtualvoidMakeTail()=0;public:voidMake(){//模版函数:提前将业务逻辑做好了;MakeTail();MakeBody();MakeHead();}private:};classJeep:publicMakeCar{public:virtualvoidMakeHead(){cout<<"Jeephead"<<endl;}virtualvoidMakeBody(){cout<<"JeepBody"<<endl;}virtualvoidMakeTail(){cout<<"JeepTail"<<endl;}private:};classBus:publicMakeCar{public:virtualvoidMakeHead(){cout<<"Bushead"<<endl;}virtualvoidMakeBody(){cout<<"BusBody"<<endl;}virtualvoidMakeTail(){cout<<"BusTail"<<endl;}private:};intmain(void){MakeCar*car=newBus;car->Make();deletecar;MakeCar*car1=newJeep;car1->Make();deletecar1;return0;}

(2)、运行结果



5、其余设计模式

(1)、责任链模式:执行完一个任务以后,自动的执行下一个任务;

(2)、观察者模式:定义对象间多种的依赖关系,使的每一个对象改变状态,则所有依赖的对象都会得到通知;一对多的关系!!!

(3)、访问者模式:将对象的数据和行为进行分离!!!
主要作用于数据结构:将数据结构与数据结构上的具体操作进行分离!!!
不同对象对同一个事务的不同操作!

(4)解释模式:根据用户的输入:程序自动解释为不同的动作!!!