b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

解释器模式举例_lua解释器交互模式_动态编译与解释器模式(4)

电脑杂谈  发布时间:2017-02-22 17:29:35  来源:网络整理

如果对Java容器不熟悉,下面再提供一个例子(模仿Iterator,其实顺便也介绍了Iterator):

如果有多种数据结构要遍历,我们就需要一种用于遍历不同结构的工具,首先我们就需要为这个工具定义一个接口(抽象产品),用于描述如何来遍历:

//只是需要遍历一堆数据,那么只需要2个方法就可以了public intece Iterator<T> {    boolean hasNext();  //是否还有下一个元素    T next();       //得到下一个元素}

然后就是我们要遍历的目标,而这些目标此处我们暂定为列表,这就是构造者:

//便于介绍,不做多的操作public intece List<T> {    Iterator<T> iterator();   //返回一个遍历器    boolean add(T t);   //添加元素到列表}

对于List可能有多种实现方式,比如数组和链表,此处就简陋的介绍一下,而这些就是具体构造者,而里面有遍历器的具体实现(具体产品),此处以内部类的形式放到了List的实现(具体构造者)里面,也完全可以修改代码将遍历器的实现(具体产品)独立出来:

数组的实现:

package com.anxpp.designpattern.factorymethod;//方便演示而实现的简陋的数组listpublic class ArrayList<T> implements List<T>{    private int size;               //存放的元素个数,会默认初始化为0    private Object[] defaultList;   //使用数组存放元素    private static final int defaultLength = 10;//默认长度    public ArrayList(){             //默认构造函数        defaultList = new Object[defaultLength];    }    @Override    public Iterator<T> iterator() {        return new MyIterator();    }    //添加元素    @Override    public boolean add(T t) {        if(size<=defaultLength){            defaultList[size] = t;            return true;        }        return false;    }    //遍历器(具体产品)    private class MyIterator implements Iterator<T>{        private int next;        @Override        public boolean hasNext() {            return next<size;        }        @SuppressWarnings("unchecked")        @Override        public T next() {            return (T) defaultList[next];        }    }}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33893-4.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 陈嘉瑶
      陈嘉瑶

      谁告诉你北洋没有一发炮弹击穿击穿主装甲

    热点图片
    拼命载入中...