电视机遥控器是一个迭代器的现实应用,通过它可以实现对电视频道集合的遍历操作,电视机可以看成一个存储频道的聚合对象。试模拟电视机遥控器的实现,绘制出相应的类图。20软2
20软2
第一步,定义一个抽象聚合类Television
public interface Television
{
public TVIterator createIterator();
}
第二步,定义一个抽象迭代器TVIterator
public interface TVIterator
{
public void setChannel(int i);
public Object currentChannel();
public void next();
public void previous();
public boolean isLast();
public boolean isFirst();
}
第三步,定义一个具体聚合类TCLTelevision
public class TCLTelevision implements Television
{
public Object[] obj= {"CCTV1","CCTV2","CCTV3","CCTV4","CCTV5"};
public TVIterator createIterator()
{
return new TCLIterator();
}
//具体迭代器TCLIterator:
private class TCLIterator implements TVIterator
{
private int currentIndex = 0;
public void setChannel(int i)
{
currentIndex=i;
}
public void next() {
if(currentIndex<obj.length){
currentIndex++;
}
}
public void previous() {
if(currentIndex>0){
currentIndex--;
}
}
public boolean isLast() {
return currentIndex ==obj.length;
}
public Object currentChannel() {
return obj[currentIndex];
}
public boolean isFirst() {
return currentIndex==0;
}
}
}
第四步,定义一个具体迭代器TCLIterator
public class TCLIterator implements TVIterator
{
private int currentIndex = 0;
public void setChannel(int i) {}
public void next() {}
public void previous() {}
public boolean isLast() {
return false;
}
public Object currentChannel() {
return false;
}
public boolean isFirst() {
return false;
}
}
第五步,定义用户测试类Client
public class Client {
public static void main(String[] args) {
Television tv;
tv=new TCLTelevision();
TVIterator i =tv.createIterator();
System.out.println("电视频道:");
while(!i.isLast()){
System.out.println(i.currentChannel().toString());
i.next();
}
}
}
测试结果: