Java设计模式(一)

这两天在看《设计模式--JAVA语言中的应用》这本书,写作风格是我所喜欢的,先说明原理,再图示解说,再根据示例说明具体的用法。使人很好地理解,而且章节的安排上,也将23种设计模式根据应用进行了分类和归纳。看书的同时顺便也总结一下,也全当复习。

第一类:访问方式

代表迭代器模式(Iterator Pattern)

迭代器模式是描述了对一组同类的对象的访问方式,所起到作用其实就是类似于for或while循环,依次遍历并处理一个“聚合”中的元素。

public interface Aggregate{

public abstract Iterator iterator();

}

public interface Iterator{

public abstract boolean hasNext();

public abstract Object next();

}

通过Aggregate类利用iterator方法建立一个实现Iterator接口的类的对象实例(instance)。Iterator接口执行元素递增,类似循环变量的功能。

当然该模式的实现还有声明一个被迭代元素的类Content,实现Iterator接口的ConcreteIterator类,以及一个实现Aggregate接口的表示元素的聚合类Contents。

在Contents类中有保存多个content对象的数据域,可用例如数组(Content[])保存。同时在Contents类中也要实现Aggregate接口中的iterator方法,返回一个ConcreteIterator的实例,注意这里ConcreteIterator的实例是针对Contents对象而构造的,所以该iterator方法可以实现为:

public class Contents implements Aggregate{

private Content[] contents; 

private int last = 0;

public Contents (int maxSize){

this.contents = new Content[maxSize];

}

public void add(Content content){

this.contents[last] = content;

last++;

}

public ConcreteIterator iterator(){

return new ConcreteIterator(this);

}

public int getSize(){

return last;

}

public Contents getByIndex(int index){

return this.contents[index];

}

}

ConcreteIterator类只要实现一个构造方法,以及Iterator接口中具体的hasNext和next方法即可。

public class ConcreteIterator implements Iterator{

 private int index ;

private Contents contents;

public ConcreteIterator(Contents contents){

this.contents = contents;

this.index = 0;

}

public boolean hasNext(){

if(index < contents.getSize())

return true;

else

return fasle;

}

public Content next(){

index++;

return contents.getByInex(index-1);

}

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值