zoukankan      html  css  js  c++  java
  • 02【创建型】原型模式

    原型模式(克隆对象)

    用于创建重复的对象,用克隆对象的方式代替new 关键字的使用。

    用一个已经存在的实例创建对象,通过复制该对象来创建一个原型相同或者相似的新对象

    实现:原有对象通过实现Cloneable 重写父类clone()方法

    //对象实现Cloneable 重写父类的clone方法

    public class Student implements Cloneable {
    
        private String id;
    
        private String name;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
    
        public Object clone() {
            Object clone = null;
            try {
                clone = super.clone();
            } catch (CloneNotSupportedException e) {
                e.printStackTrace();
            }
            return clone;
        }
    
    }

    //测试 分别用new的方式与clone的方式 创建100个相同的对象需要的毫秒数

    public static void main(String[] args) {
    
            long start = System.currentTimeMillis();
            System.out.println(start);
    
            for (int i = 0;i<100;i++) {
    
                Student student = new Student();
                student.setId("1");
                student.setName("mrc");
    
                System.out.println(student.getId());
                System.out.println(student.getName());
            }
    
            long end = System.currentTimeMillis();
            System.out.println(end);
    
            System.out.println("总耗时:"+(end-start));
    
    
        }

    //通过克隆的方式创造相同的对象进行测试

    public static void main(String[] args) {
    
            long start = System.currentTimeMillis();
            System.out.println(start);
    
            Student student = new Student();
            student.setId("1");
            student.setName("mrc");
    
            for (int i = 0;i<100;i++) {
    
                Student student1 = (Student) student.clone();
    
                System.out.println(student1.getId());
                System.out.println(student1.getName());
            }
    
            long end = System.currentTimeMillis();
            System.out.println(end);
    
            System.out.println("总耗时:"+(end-start));
    
    
        }

  • 相关阅读:
    PPT文档页数显示的增加和更新
    Android http超时选项的测试
    64位win7硬盘安装64位ubuntu 13.04
    为博客园添加目录的配置总结
    Android webview通过http get下载文件下载两次的问题及解决方法
    ubuntu12.04安装搜狗输入法和配置
    samsung Galaxy s2(GT i9100g )刷机升级至4.4小记
    uva 11584 Partitioning by Palindromes
    uva 10534 Wavio Sequence
    poj 1185 炮兵阵地
  • 原文地址:https://www.cnblogs.com/ChromeT/p/11696422.html
Copyright © 2011-2022 走看看