设计模式-原型模式

来源:互联网 发布:java中tomcat安装教程 编辑:程序博客网 时间:2024/06/14 19:52

介绍

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。

优点

  1. 性能提高。
  2. 简化对象的创建

注意事项

  1. 使用原型模式复制对象不会调用类的构造方法。
  2. 有深拷贝与浅拷贝。

结构图

这里写图片描述

案例

Prototype 类

class Prototype implements Cloneable {    public Prototype clone(){        Prototype prototype = null;        try{            prototype = (Prototype)super.clone();        }catch(CloneNotSupportedException e){            e.printStackTrace();        }        return prototype;    }}

ConcretePrototype 类

class ConcretePrototype extends Prototype{    public void show(){        System.out.println("原型模式实现类");    }}

Client类

public class Client {    public static void main(String[] args){        ConcretePrototype cp = new ConcretePrototype();        for(int i=0; i< 10; i++){            ConcretePrototype clonecp = (ConcretePrototype)cp.clone();            clonecp.show();        }    }}

这里写图片描述

浅克隆和深克隆

浅克隆

只负责克隆按值传递的数据(比如基本数据类型、String类型),而不复制它所引用的对象,换言之,所有的对其他对象的引用都仍然指向原来的对象。

深克隆

除了浅度克隆要克隆的值外,还负责克隆引用类型的数据。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深度克隆把要复制的对象所引用的对象都复制了一遍,而这种对被引用到的对象的复制叫做间接复制。

说简单点就是复制值(浅克隆)还是引用(深克隆).深克隆还存在一个死循环的问题,所以需要多加注意。

原创粉丝点击