国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

香港云服务器
服務器之家 - 編程語言 - JAVA教程 - Java使用設計模式中迭代器模式構建項目的代碼結構示例

Java使用設計模式中迭代器模式構建項目的代碼結構示例

2020-04-22 11:54匆忙擁擠repeat JAVA教程

這篇文章主要介紹了Java使用設計模式中迭代器模式構建項目的代碼結構示例,迭代器模式能夠對訪問者隱藏對象的內部細節,需要的朋友可以參考下

迭代器(Iterator)模式,又叫做游標(Cursor)模式。GOF給出的定義為:提供一種方法訪問一個容器(container)對象中各個元素,而又不需暴露該對象的內部細節。
 
迭代器模式由以下角色組成:
迭代器角色(Iterator):迭代器角色負責定義訪問和遍歷元素的接口。
具體迭代器角色(Concrete Iterator):具體迭代器角色要實現迭代器接口,并要記錄遍歷中的當前位置。
容器角色(Container):容器角色負責提供創建具體迭代器角色的接口。
具體容器角色(Concrete Container):具體容器角色實現創建具體迭代器角色的接口。這個具體迭代器角色與該容器的結構相關。

Java實現示例
類圖:

Java使用設計模式中迭代器模式構建項目的代碼結構示例

代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
/**
 * 自定義集合接口, 類似java.util.Collection
 * 用于數據存儲
 * @author stone
 *
 */
public interface ICollection<T> {
   
  IIterator<T> iterator(); //返回迭代器
  void add(T t);
  T get(int index);
}
?
1
2
3
4
5
6
7
8
9
10
11
12
/**
 * 自定義迭代器接口 類似于java.util.Iterator
 * 用于遍歷集合類ICollection的數據
 * @author stone
 *
 */
public interface IIterator<T> {
  boolean hasNext();
  boolean hasPrevious();
  T next();
  T previous();
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
 * 集合類, 依賴于MyIterator
 * @author stone
 */
public class MyCollection<T> implements ICollection<T> {
 
  private T[] arys;
  private int index = -1;
  private int capacity = 5;
   
  public MyCollection() {
    this.arys = (T[]) new Object[capacity];
  }
   
  @Override
  public IIterator<T> iterator() {
    return new MyIterator<T>(this);
  }
   
  @Override
  public void add(T t) {
    index++;
    if (index == capacity) {
      capacity *= 2;
      this.arys = Arrays.copyOf(arys, capacity);
       
    }
    this.arys[index] = t;
  }
   
  @Override
  public T get(int index) {
    return this.arys[index];
  }
   
}

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*
 * 若有新的存儲結構,可new 一個ICollection, 對應的 new 一個IIterator來實現它的遍歷
 */
@SuppressWarnings({"rawtypes", "unchecked"})
public class Test {
  public static void main(String[] args) {
    ICollection<Integer> collection = new MyCollection<Integer>();
    add(collection, 3, 5, 8, 12, 3, 3, 5);
    for (IIterator<Integer> iterator = collection.iterator(); iterator.hasNext();) {
      System.out.println(iterator.next());
    }
     
    System.out.println("-------------");
     
    ICollection collection2 = new MyCollection();
    add(collection2, "a", "b", "c", 3, 8, 12, 3, 5);
    for (IIterator iterator = collection2.iterator(); iterator.hasNext();) {
      System.out.println(iterator.next());
    }
     
  }
   
  static <T> void add(ICollection<T> c, T ...a) {
    for (T i : a) {
      c.add(i);
    }
  }
}

打?。?/p>

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
3
5
8
12
3
3
5
-------------
a
b
c
3
8
12
3
5

 

延伸 · 閱讀

精彩推薦
450
主站蜘蛛池模板: 一区欧美 | 婷婷网址 | 亚洲国产精品自拍 | 欧美成人黄色小视频 | 亚洲香蕉视频 | 日本在线小视频 | 97超碰在线免费 | 国产理论在线 | 日本一区高清 | 亚洲最新无码中文字幕久久 | 人人人人澡人人爽人人澡 | 国产日韩一区二区三免费高清 | 久久久久亚洲精品 | 欧美三区 | 午夜电影网 | 成人av小说 | 日本一区视频 | 中文字幕在线免费播放 | 日韩国产一区二区三区 | 免费在线a | 杨门女将寡妇一级裸片看 | 99热这里有精品 | 国产视频网 | 亚洲色图88 | 日韩av在线中文字幕 | 亚洲精品日日夜夜 | 日韩在线免费 | 国产一区二区在线播放 | 精品国产一区二区三区日日嗨 | 少妇看av一二三区 | www.亚洲| 一区二区在线不卡 | 在线观看日韩精品 | 国色天香成人网 | 国产午夜精品福利 | 日韩免费一区 | 精久久| 日韩av免费在线观看 | 4438x成人网最大色成网站 | av在线免费观看网址 | 欧美黑人性暴力猛交喷水 |