设计模式 - 原型模式

2022-01-27  本文已影响0人  yufw

定义

原型模式(Prototype):通过已经实例好的对象实例,通过复制的方式 获取 内容相同或者类似的 对象;

特点

优缺点

优点

缺点

主要组成结构

应用场景

代码实现

浅拷贝:拷贝出来的新对象,新对象的属性和原对象完全相同,对于非基本类型的属性地址仍然是原对象的属性对象地址,只是 新对象的地址 是新的
深拷贝:拷贝出来的新对象,完全是一个新对象;属性对象地址和此对象地址 都是全新的

浅拷贝

public class PrototypePattern {

    public static void main(String[] args) {
        final ShallowCloneInstance instance = new ShallowCloneInstance();
        instance.setItem("ShallowCloneInstance");
        instance.setPerson(new Person());
        final ShallowCloneInstance clone = instance.clone();
        System.out.println(instance);
        System.out.println(clone);
        System.out.println(instance.getItem());
        System.out.println(instance.getPerson());
        System.out.println(clone.getItem());
        System.out.println(clone.getPerson());
    }

}

/**
 * 浅克隆
 */
class ShallowCloneInstance implements Cloneable{

    private String item;
    private Person person;

    public String getItem() {
        return item;
    }

    public Person getPerson() {
        return person;
    }

    public ShallowCloneInstance() {

    }

    public void setItem(String item) {
        this.item = item;
    }

    public void setPerson(Person person) {
        this.person = person;
    }

    @Override
    public ShallowCloneInstance clone() {
        try {
            return (ShallowCloneInstance) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new AssertionError();
        }
    }
}

result

com.beauty.designpatterns.creation.ShallowCloneInstance@5b464ce8
com.beauty.designpatterns.creation.ShallowCloneInstance@57829d67
ShallowCloneInstance
com.beauty.designpatterns.creation.Person@19dfb72a
ShallowCloneInstance
com.beauty.designpatterns.creation.Person@19dfb72a
上一篇 下一篇

猜你喜欢

热点阅读