十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
所谓Iterator模式 即是Iterator为不同的容器提供一个统一的访问方式 本文以java中的容器为例 模拟Iterator的原理 需要的朋友可以参考下
站在用户的角度思考问题,与客户深入沟通,找到海沧网站设计与海沧网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、成都网站设计、企业官网、英文网站、手机端网站、网站推广、国际域名空间、雅安服务器托管、企业邮箱。业务覆盖海沧地区。
首先定义一个容器Collection接口
复制代码 代码如下: package njupt zhb learn iterator; public interface Collection { void add(Object o); int size(); Iterator iterator(); }
定义一个Iterator迭代器的接口
复制代码 代码如下: package njupt zhb learn iterator; public interface Iterator { Object next(); boolean hasNext(); }
定义一个ArrayList 实现Collection接口 并写一个实现了Iterator接口的内部类
复制代码 代码如下: package njupt zhb learn iterator; import njupt zhb learn iterator Collection; public class ArrayList implements Collection { Object[] objects = new Object[ ]; int index = ; public void add(Object o) { if(index == objects length) { Object[] newObjects = new Object[objects length * ]; System arraycopy(objects newObjects objects length); objects = newObjects; } objects[index] = o; index ++; } public int size() { return index; } public Iterator iterator() { return new ArrayListIterator(); } private class ArrayListIterator implements Iterator { private int currentIndex = ; @Override public boolean hasNext() { if(currentIndex = index) return false; else return true; } @Override public Object next() { Object o = objects[currentIndex]; currentIndex ++; return o; } } }
编写测试程序TestMain
复制代码 代码如下: package njupt zhb learn iterator; import njupt zhb learn iterator ArrayList; public class TestMain { public static void main(String[] args) { Collection c = new ArrayList(); for(int i= ; i ; i++) { c add("string "+i); } System out println(c size()); Iterator it = c iterator(); while(it hasNext()) { Object o = it next(); System out println(o toString() + " "); } } }
运行结果
复制代码 代码如下: string string string string string string string string string string string string string string string lishixinzhi/Article/program/Java/JSP/201311/20579
设计模式 解决某一类问题最行之有效的方法 (java中有 种通用设计模式)单例设计模式 解决一个类在内存中只存在一个对象 单例设计模式有两种方式 )饿汉式先初始化对象 当类一进内存就创建好对象 )懒汉式对象是方法被调用时才初始化 也叫延时加载 类进内存时 对象还没有存在 只有通过方法调用时 才建立对象 单例设计模式 是想要保证对象的唯一 )为了避免其他程序过多建立该类对象 先禁止其他程序建立该类对象 )还为了让其他程序可以访问到该类对象 只好在本类中自定义一个对象 )为了方便其他程序对自定义对象的访问 可以对外其他一些访问方式 利用这三步进行代码实现 )将构造函数私有化 )在类中创建一个本类对象 )提供一个方法可以获取到该对象提示 在单例设计模式中 事物该怎么描述还怎么描述 当需要将该事物的对象保证在内存中唯一时 加上以上三步即可 代码说明 // )饿汉式[java]class Single{private int num;public void setNum(int num){this num = num;}public int getNum(){return num;}//将构造函数私有化private Single(){}//在类中创建一个本类对象 因为构造函数被私有化 该类不能创建对象 想在外部访问 所以将其静态private static Single s = new Single() //提供一个方法可以获取到该对象 不能创建对象 所以将方法静态 可以通过 (类名 方法名)的形式进行访问public static Single getInstance(){return s;}}class SingleDemo{public static void main(String[] args){//单例的构造函数被静态后不能创建对象 保证对象的唯一 所以通过 (类名 方法名)的形式进行访问Single s = Single getInstance() Single s = Single getInstance() s setNum( ) System out println(s getNum()) //结果 因为Single单例里面对对象和方法进行了静态 数据共享 所以s 的值}}
lishixinzhi/Article/program/Java/hx/201311/26060
一、大约分为三类:
1、创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。
2、结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。
3、行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
二、设计模式遵循的原则有6个:
1、开闭原则(OpenClosePrinciple)
对扩展开放,对修改关闭。
2、里氏代换原则(LiskovSubstitutionPrinciple)
只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。
3、依赖倒转原则(DependenceInversionPrinciple)
这个是开闭原则的基础,对接口编程,依赖于抽象而不依赖于具体。
4、接口隔离原则(InterfaceSegregationPrinciple)
使用多个隔离的借口来降低耦合度。
5、迪米特法则(最少知道原则)(DemeterPrinciple)
一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
6、合成复用原则(CompositeReusePrinciple)
原则是尽量使用合成/聚合的方式,而不是使用继承。继承实际上破坏了类的封装性,超类的方法可能会被子类修改。