目錄:
設計模式學習筆記首頁
設計模式(1)——抽象工廠 abstractfactory
設計模式(2)——生成器 builder
設計模式(3)——工廠方法 factory method
設計模式(4)——原型 prototype
設計模式(5)——單例 singleton
設計模式(6)——介面卡 adapter
設計模式(7)——橋接 bridge
設計模式(8)——組合 composite
設計模式(9)——裝飾 decorator
設計模式(10)——外觀 facade
設計模式(11)——享元 flyweight
設計模式(12)——** proxy
設計模式(13)——職責鏈 chain of responsibility
設計模式(14)——命令 command
設計模式(15)——直譯器 interpreter
設計模式(16)——迭代器 iterator
設計模式(17)——中介者 mediator
設計模式(18)——備忘錄 memento
設計模式(19)——觀察者 observer
設計模式(20)——狀態 state
設計模式(21)——策略 strategy
設計模式(22)——模板方法 template method
設計模式(23)——訪問者 visitor
提供一種方法順序訪問乙個聚合物件中各個元素,而又不需要暴露該物件的內部表示。
訪問乙個聚合物件的內容而無需暴露它的內部表示
支援對聚合物件的多種遍歷
為遍歷不同的聚合結構提供乙個統一的介面(即,支援多型迭代)
stl 模板庫的中常見的容器類有list,set,map等,使用容器類經常需要遍歷裡面的所有元素,當對容器類中元素的組織方式不清楚時,要遍歷元素不是一件容易的事情。迭代器就是解決這個問題的救星,它提供了一套統一的介面,如begin()
,next()
,end()
,所有的遍歷都可以用這套介面來實現。這套介面具體由每個容器類來實現,容器內部才是最清楚怎麼遍歷自己元素的地方。正向遍歷,反向遍歷,中序遍歷的需求可以通過由容器內部建立不同的iterator
來實現,而iterator
暴露的介面是一樣的。
通過引入 iterator 迭代器這個中間層,系統可以不需要直接操作容器的所有細節,只需要知道 iterator 的標準介面就能操作容器的所有元素。iterator 將系統和容器的細節解耦了,程式猿的生活也變得更加美好了。
1. 編寫聚合類介面aggreagte
,聚合類concreteaggregate
2. 編寫迭代器介面iterator
,迭代器類concreteiterator
,含有方法first()
、next()
、currentitem()
、isdone()
3. 編寫迭代器建構函式concreteiterator(aggregate* ag, int idx = 0)
,強關聯乙個聚合類物件。
iterator.h
#pragma once
typedef int object;
class aggregate;
class iterator ;
class concreteiterator : public iterator ;
iterator.cpp#include "iterator.h"
#include "aggregate.h"
#include
using
namespace::std;
iterator::iterator() {}
iterator::~iterator() {}
concreteiterator::concreteiterator(aggregate* ag, int idx)
concreteiterator::~concreteiterator() {}
object concreteiterator::currentitem()
// 初始化迭代器
void concreteiterator::first()
void concreteiterator::next()
bool concreteiterator::isdone()
agrregate.h#pragma once
class iterator;
typedef int object;
class aggregate ;
class concreteaggregate : public aggregate ;
concreteaggregate();
~concreteaggregate();
iterator* createiterator();
object getitem(int idx);
int getsize();
protected:
private:
object _objs[size];
};
aggregate.cpp#include "aggregate.h"
#include "iterator.h"
#include
using
namespace::std;
aggregate::aggregate() {}
aggregate::~aggregate(){}
concreteaggregate::concreteaggregate()
}concreteaggregate::~concreteaggregate() {}
iterator* concreteaggregate::createiterator()
object concreteaggregate::getitem(int idx)
else
}int concreteaggregate::getsize()
main.cpp#pragma once
#include "aggregate.h"
#include "iterator.h"
#include
using
namespace::std;
int main(int argc, char* argv)
return
0;}
23種設計模式 16 迭代器模式
迭代器介面 public inte ce iterator 資料容器介面 public inte ce idatacontainer 資料物件 public class data idatacontainer 集合長度 public int length 根據索引獲取值 public int get...
python高階特性5 迭代器 Iterator
python五個高階特性 切片 迭代列表生成式 生成器迭代器 我們已經知道,可以直接作用於for迴圈的資料型別有以下幾種 一類是集合資料型別,如list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function。這些可以直接作用...
設計模式 迭代器模式
迭代器模式是屬於物件行為性的模式。首先是定義 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露物件的表示方法。迭代器的結構圖 適用性 1 訪問乙個聚合物件的內容而無需暴露它的內部表示 2 支援聚合物件的多種遍歷 3 為遍歷不同的聚合結構提供乙個統一的介面 支援多型迭代 協作 concretei...