美文网首页
设计模式快速学习(五)原型模式

设计模式快速学习(五)原型模式

作者: FantJ | 来源:发表于2019-02-28 16:22 被阅读27次

用于创建重复的对象,同时又能保证性能。通俗的讲,原型模式就是克隆对象,直接copy字节码,不走构造方法,性能非常高。ORM中经常用到。

注意

只支持9种数据类型的深拷贝: 8大基本类型(int long float double boolean char short byte )+String
其他(List等)数据类型默认都是浅拷贝,但是我们也能通过他们自身的clone方法来深拷贝。

        List list = new ArrayList();
        List cloneList = (List) ((ArrayList) list).clone();
Prototype.java

实现Cloneable接口,并且重写clone()方法。

public class Prototype implements Cloneable{
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

:如果不实现该接口而直接调用clone()方法会抛出CloneNotSupportedException异常

PeoplePrototype.java

人原型,用来做被拷贝的对象。

public class PeoplePrototype extends Prototype{
    private int age;
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
Main.java
public class Main {
    public static void main(String[] args) {
        PeoplePrototype prototype = new PeoplePrototype();
        prototype.setAge(20);
        prototype.setName("FantJ");
        try {
            PeoplePrototype clone = (PeoplePrototype)prototype.clone();
            System.out.println(clone.getAge());
            System.out.println(clone == prototype);
            System.out.println(clone+"    "+prototype);
            System.out.println(clone.getClass()  +"     "+ prototype.getClass());
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }
}

控制台打印:

20
false
com.fantj.prototype.ConcretePrototype@6d6f6e28    com.fantj.prototype.ConcretePrototype@135fbaa4
class com.fantj.prototype.ConcretePrototype     class com.fantj.prototype.ConcretePrototype

相关文章

  • 设计模式快速学习(五)原型模式

    用于创建重复的对象,同时又能保证性能。通俗的讲,原型模式就是克隆对象,直接copy字节码,不走构造方法,性能非常高...

  • 常用开源框架中设计模式使用分析-原型设计模式(Prototype

    五、原型设计模式(Prototype Pattern) 5.1 介绍 相比单例设计模式,原型模式是每次创建一个对象...

  • JavaJavascript基础进阶(十七)JS中常用的设计模式

    单利设计模式、构造原型设计模式、发布订阅设计模式、promise设计模式 单利模式 构造原型设计模式 最贴近OOP...

  • Java 十一种设计模式深入理解

    目录一、工厂设计模式二、抽象工厂模式三、单例设计模式四、建造者(Builder)模式五、原型模式六、适配器设计模式...

  • 学习笔记2020-05-13

    今天学习了: 1、原型模式 2、KNN 3、空气炸锅 4、苦瓜炒鸡蛋没做好 1、设计模式-原型模式 原型模式,就是...

  • Spring 准备内容

    准备内容 原型设计模式 PropotypeModle 原型模式也属于创造型设计模式,用原型实例指定创建对象的种类,...

  • 设计模式(创建型模式)

    设计模式简述 创建型模式(共五种): 工厂方法模式、 抽象工厂模式、 单例模式、 建造者模式、 原型模式. 结构型...

  • Android常用设计模式有哪些?

    Android常用设计模式有哪些? 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式...

  • 设计模式

    1、设计模式分类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,...

  • 设计模式问答(一)

    设计模式问答(一) 什么是设计模式?您能说出工厂模式、抽象工厂模式、创建者模式、原型模式、原型模式的潜复制及深复制...

网友评论

      本文标题:设计模式快速学习(五)原型模式

      本文链接:https://www.haomeiwen.com/subject/lpijkqtx.html