浅谈23中设计模式--------2.Iterator模式

Iterator模式:提供一个方法按顺序遍历一个集合内的元素,而又不需要暴露该对象的内部表示。

主要实现:

    1 .访问一个聚合的对象,而不需要暴露对象的内部表示

  2 .支持对聚合对象的多种遍历

  3 .对遍历不同的对象,提供统一的接口。

就上代码模拟ArraList和LinkedList的增加方法add(),和迭代Iterator();

首选定义公共接口Collection:

package Iterator;

public interface Collection {

	//定义一种约束机制来约束,添加方法就叫ADD(),将对外公开的方法统一起来
	void add(Object o);
	int size();
	Iterator iterator();
}

再定义接口Iterator用于公共迭代入口:

package Iterator;

public interface Iterator {

	Object next();
	boolean hasNext();
}

然后定义ArraList

package Iterator;

public class ArraList implements Collection{

	Object[] objects=new Object[10];
	int index=0;
	public void add(Object o){
		
			
			if(index==objects.length){
				Object[] newObjects=new Object[objects.length*2];
				System.arraycopy(objects, 0, newObjects, 0, objects.length);
				objects=newObjects;
			}

			objects[index]=o;
			index++;
		
	}
	public int size(){
		return index;
	}
	public Iterator iterator(){
		 
		return new ArraListIterator();
	}
	private class ArraListIterator implements Iterator{
		private int currentIndex=0;
		@Override
		public boolean hasnNext() {
			if(currentIndex>=index) return false;
			else return true;
			
		}
		@Override
		public Object next() {
			Object o= objects[currentIndex];
			currentIndex ++;
			return o;
		}
		
		
	}

	
	
}

测试类:

package Iterator;

public class ArraListTest {
	public static void main(String[] args) {
		//ArraList al=new ArraList();
		LinkedList al=new LinkedList();
		Collection arrl=new ArraList();
		Collection link=new LinkedList();
		for(int i=0;i<18;i++){
			link.add(new Cat(i));
		}
		System.out.println(link.size());
		
		Iterator it=link.iterator();
		while(it.hasnNext()){
			Object o=it.next();
			System.out.println(o+" ");
			
		}
		
	}
	

}
package Iterator;

public class Cat {
	private int id;

	public Cat(int id) {
		super();
		this.id = id;
	}

	@Override
	public String toString() {
		return "Cat [id=" + id + "]";
	}
	

}

 LinkedList

package Iterator;

public class LinkedList implements Collection{
	Node head=null;
	Node tail=null;
	//Node data=null;
	int size=0;
	public void add(Object o){
		Node node=new Node(o,null);
		if(null==head){
			head=node;
			tail=node;
		}
		head=node;
		tail.setNext(node);
		tail=node;
		//tail.setData(node);
		size++;
	}
	public int size(){
		return size;
	}
	@Override
	public Iterator iterator() {
		return new LinkListIterator();
	}
	
	private class LinkListIterator implements Iterator{
		private int currentIndex=0;

		@Override
		public boolean hasnNext() {
			if(currentIndex>=size) return false;
			else return true;
		}
		
		@Override
		public Object next() {
			/*Object o=tail.getData();
			currentIndex ++;
			return o;*/
			return null;
		}

	}

提供Node来作为LinkedList指针;

package Iterator;

public class Node {

	private Object data;
	private Node next;
	public Object getData() {
		return data;
	}
	public void setData(Object data) {
		this.data = data;
	}
	public Node getNext() {
		return next;
	}
	public void setNext(Node next) {
		this.next = next;
	}
	public Node(Object data, Node next) {
		super();
		this.data = data;
		this.next = next;
	}
	
}

这样,就可以有相同的add(),和迭代方法了;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java设计模式是一组经过实践验证的面向对象设计原则和模式,可以帮助开发人员解决常见的软件设计问题。下面是常见的23设计模式: 1. 创建型模式(Creational Patterns): - 工厂方法模式(Factory Method Pattern) - 抽象工厂模式(Abstract Factory Pattern) - 单例模式(Singleton Pattern) - 原型模式(Prototype Pattern) - 建造者模式(Builder Pattern) 2. 结构型模式(Structural Patterns): - 适配器模式(Adapter Pattern) - 桥接模式(Bridge Pattern) - 组合模式(Composite Pattern) - 装饰器模式(Decorator Pattern) - 外观模式(Facade Pattern) - 享元模式(Flyweight Pattern) - 代理模式(Proxy Pattern) 3. 行为型模式(Behavioral Patterns): - 责任链模式(Chain of Responsibility Pattern) - 命令模式(Command Pattern) - 解释器模式(Interpreter Pattern) - 迭代器模式Iterator Pattern) - 介者模式(Mediator Pattern) - 备忘录模式(Memento Pattern) - 观察者模式(Observer Pattern) - 状态模式(State Pattern) - 策略模式(Strategy Pattern) - 模板方法模式(Template Method Pattern) - 访问者模式(Visitor Pattern) 4. 并发型模式(Concurrency Patterns): - 保护性暂停模式(Guarded Suspension Pattern) - 生产者-消费者模式(Producer-Consumer Pattern) - 读写锁模式(Read-Write Lock Pattern) - 信号量模式(Semaphore Pattern) - 线程池模式(Thread Pool Pattern) 这些设计模式可以根据问题的特点和需求来选择使用,它们提供了一些可复用的解决方案,有助于开发高质量、可维护且易于扩展的软件系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值