设计模式作业 之迭代器模式
·
设计一个逐页迭代器,每次可返回指定个数(一页)元素,并将该迭代器用手对数据进行分页处理。绘制对应的类图并编程模拟实现。
(1)绘制类图

(2)代码实现
AbstractAggregate类:
package lib6.iterator;
public interface AbstractAggregate {
AbstractIterator createIterator();
}
AbstractIterator类:
package lib6.iterator;
public interface AbstractIterator {
public void paging(int a, int b);
public void nextPage();
public void previousPage();
}
Aggregate类(包含内部类MyIterator):
package lib6.iterator;
import java.util.ArrayList;
public class Aggregate implements AbstractAggregate {
private ArrayList<String> names;
public Aggregate() {
names = new ArrayList<String>();
for (int i = 0; i < 100; i++) {
names.add(i, "用户" + (i + 1));
}
}
@Override
public AbstractIterator createIterator() {
return new MyIterator();
}
private class MyIterator implements AbstractIterator {
private Aggregate aggregate;
private int currentPage; //当前页号
private int num; //每页个数
//分页输出的方法 a表示每页的数量 ,b表示页号
@Override
public void paging(int a, int b) {
num = a;
currentPage = b;
if (names.size() % a == 0 && b >= (names.size() / a + 1)) {
System.out.println("您查看的页内容为空!");
} else if (names.size() % a != 0 && b >= (names.size() / a + 2)) {
System.out.println("您查看的页内容为空!");
} else {
try {
for (int i = ((b - 1) * a); i < (((b - 1) * a) + a); i++) {
System.out.println(names.get(i));
}
} catch (Exception e) {
System.out.println("我是有底线的——————————————————————");
}
}
}
@Override
public void nextPage() {
try {
for (int i = num * currentPage; i < num * currentPage + num; i++) {
System.out.println(names.get(i));
}
currentPage += 1;
} catch (Exception e) {
System.out.println("当以已是最后一页!");
}
}
@Override
public void previousPage() {
if (currentPage == 1) {
System.out.println("当前已是第一页!");
} else {
for (int i = num * currentPage - (2 * num); i < num * currentPage - num; i++) {
System.out.println(names.get(i));
}
currentPage -= 1;
}
}
}
}
用户类Client:
package lib6.iterator;
public class Client {
public static void display(AbstractAggregate abstractAggregate){
AbstractIterator i = abstractAggregate.createIterator();
System.out.println("分页==========");
i.paging(3,27);
System.out.println("当前页的上一页=========");
i.previousPage();
System.out.println("当前页的下一页==========");
i.nextPage();
}
public static void main(String[] args) {
AbstractAggregate aa;
aa = new Aggregate();
display(aa);
}
}
更多推荐
所有评论(0)