`
isiqi
  • 浏览: 16028774 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Java设计模式_Iterator_面向接口编程

阅读更多

继上篇文章Java设计模式_Iterator(迭代容器)的一个面向接口编程

写此文章为满足以下需求:为了使方法一(ArrayList)和方法二(ListedList)实现方法(add()、size())统一,通用性更强、使代码更灵活、更有利于可扩展性。在原来的代码基础之上做了一些修改,如下:

//共用的接口

public interface Collection {

void add(Object o);

int size();

}

/**
* 此类可动态扩展(方法一)
* @author tfq
*
*/
public class ArrayList implements Collection{
Object[] objects=new Object[10];
int index=0;
/**
* 父类引用指向子类对象
* @param o
*/
public void add(Object o){
if(index==objects.length){
Object[] newObjects=new Object[objects.length*2];
//调用数组的arraycopy方法,将objects中的数据复制到newObjects中
System.arraycopy(objects, 0, newObjects, 0, objects.length);
objects=newObjects;
}
objects[index]=o;
index++;
}
/**
* 获取数组的长度
* @return
*/
public int size(){
return index;
}
}
public class Dog {
private int id;
public Dog(int id){
super();
this.id=id;
}
}
public class LinkedList implements Collection{
Node head=null;
Node tail=null;
int index=0;
public void add(Object o){
Node n=new Node(o,null);
if(head==null){
head=n;
tail=n;
}
tail.setNext(n);
tail=n;
index++;
}
public int size(){
return index;
}
}
public class Node {
private Object data;
private Node next;
public Node(Object data, Node next) {
super();
this.data = data;
this.next = 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 class Test {
public static void main(String[] args) {
//ArrayList arr=new ArrayList();
//LinkedList lkl=new LinkedList();
//针对接口编程(优点:灵活、可扩展)
//Collection colLkl=newLinkedList();
Collection colLkl=new ArrayList();
for(int i=0;i<1000;i++){
colLkl.add((Object)new Dog(10));
}
System.out.println(colLkl.size());
}
}
分享到:
评论

相关推荐

    Java开发详解.zip

    031114_【第11章:Java常用类库】_观察者设计模式笔记.pdf 031115_【第11章:Java常用类库】_正则表达式笔记.pdf 031116_【第11章:Java常用类库】_定时调度笔记.pdf 031201_【第12章:JAVA IO】_File类笔记.pdf ...

    Java基础知识点总结.docx

    &lt; java.util &gt;Iterator接口 78 &lt; java.util &gt;List接口 78 &lt; java.util &gt;Set接口 80 &lt; java.util &gt;Map接口 81 把map集合转成set的方法 82 使用集合的技巧 83 Collections--集合工具类 83 Arrays—数组对象工具类 84 ...

    二十三种设计模式【PDF版】

    整个设计模式贯穿一个原理:面对接口编程,而不是面对实现.目标原则是:降低耦合,增强灵活性. 建筑和软件中模式之异同 CSDN 的透明特别推崇《建筑的永恒之道》,认为从中探寻到软件的永恒之道,并就"设计模式"写了专门...

    AIC的Java课程1-6章

     培养面向接口编程的思维方式。  能够使用类Arrays和Collections中的方法操作数组和集合。  知道实现比较器(Comparable,Comparator)用于排序算法(多态性)。  [*]了解同步包装和不可修改包装。...

    java 面试题 总结

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    JAVA面试题最全集

    简述java编程中事件处理模式。 30.你编写过applet吗?applet的安全权限如何?试列举java application或者applet中与servlet/jsp通信可以采用的方式。 31.简述逻辑操作(如&,|)与条件操作(如&&,||)的区别。 32....

    JAVA 范例大全 光盘 资源

    第5章 面向对象设计 54 实例21 图形面积与周长(抽象类) 54 实例22 宠物结婚(封装) 56 实例23 一个盒子(继承) 58 实例24 学生的生活(多态) 60 实例25 员工薪资(接口) 62 实例26 我的类型(instanceof...

    超级有影响力霸气的Java面试题大全文档

    面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性:  多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化...

    java范例开发大全源代码

     8.3 面向对象的设计模式 241  实例156 Singleton单例模式 242  实例157 招聘(简单工厂模式) 243  实例158 同学聚会(工厂方法模式) 244  实例159 图书展(抽象工厂模式) 246  实例160 汽车...

    java范例开发大全

    8.3 面向对象的设计模式 241 实例156 Singleton单例模式 242 实例157 招聘(简单工厂模式) 243 实例158 同学聚会(工厂方法模式) 244 实例159 图书展(抽象工厂模式) 246 实例160 汽车适配器(Adapter适配器模式...

    Java范例开发大全 (源程序)

     8.3 面向对象的设计模式 241  实例156 Singleton单例模式 242  实例157 招聘(简单工厂模式) 243  实例158 同学聚会(工厂方法模式) 244  实例159 图书展(抽象工厂模式) 246  实例160 汽车适配器...

    java范例开发大全(pdf&源码)

    8.3 面向对象的设计模式 241 实例156 Singleton单例模式 242 实例157 招聘(简单工厂模式) 243 实例158 同学聚会(工厂方法模式) 244 实例159 图书展(抽象工厂模式) 246 实例160 汽车适配器(Adapter适配器模式...

    Java范例开发大全(全书源程序)

    8.3 面向对象的设计模式 241 实例156 Singleton单例模式 242 实例157 招聘(简单工厂模式) 243 实例158 同学聚会(工厂方法模式) 244 实例159 图书展(抽象工厂模式) 246 实例160 汽车适配器(Adapter...

    Java开发技术大全 电子版

    第2篇Java面向对象编程 第3章对象和类98 3.1面向对象的基本概念98 3.1.1对象98 3.1.2类99 3.1.3消息101 3.1.4面向对象的4个基本特征101 3.2类与对象104 3.2.1类的基本结构104 3.2.2类的声明104 3.2.3创建...

    net学习笔记及其他代码应用

    34.面向对象的语言具有________性、_________性、________性 答:封装、继承、多态。 35.能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。 答:IEnumerable 、 ...

    Java学习笔记-个人整理的

    {2.1.3}面向对象的编程}{47}{subsection.2.1.3} {2.2}继承}{48}{section.2.2} {2.2.1}super(), this()}{49}{subsection.2.2.1} {2.2.2}方法重写/覆盖}{50}{subsection.2.2.2} {2.3}修饰符}{51}{section.2.3} ...

Global site tag (gtag.js) - Google Analytics