设计模式之原型模式

来源:互联网 发布:golang mgo.v2 编辑:程序博客网 时间:2024/06/06 09:18

  • 现象
  • 原型模式
  • 深复制与浅复制

现象

工作中会遇到这样的问题:需要创建一批结构复杂的同一类对象,这时就需要考虑复杂对象创建时,对性能的影响了。
于是,就是了一个选择问题:要得到一批同一类对象,是继续用new,还是……clone?

原型模式

  1. 类组成
    • Prototype类:就是jdk中的Cloneable接口
    • ConcreatePrototype类:具体要clone的类,继承了Prototype类,也就是Cloneable接口;

至于Client端的使用类,不在此赘述。

public class Prototype implements Cloneable{    private String str;    private int id;    public Prototype clone() throws CloneNotSupportedException    {        Prototype prototype =super.clone();    }    public void show()    {        System.out.println("原型模式:" + str + id);    }    /**getter and setter ....**/}/****************我是客户端***********************/public class ClientTest{   public static void main(String[] args)   {        Prototype org = new Prototype();        //克隆出一个新的对象        Prototype pt = org.clone();        pt.show();        org.show();   } }

深复制与浅复制

  1. 复制有“深浅”之分,“浅”说的是复制对象的引用,对象只有一个;“深”是说复制对象,clone了几次,就有几个新的对象
  2. Java中,8种基本类型和其包装类,clone时,是深复制
  3. 其他类对象均为浅复制
  4. 由于String对象的改变(字符串内容的改变),伴随着新的String对象创建,因此虽然String对象的复制,是浅复制,但表现是却是深复制的现象
原创粉丝点击