原型模式

2018-10-21  本文已影响32人  Stroman

这模式是干啥的?

就是复制一个已经存在的对象,于是这就分为浅复制和深复制。

浅复制和深复制有啥区别?

浅复制无需再开辟内存空间,因为它只不过是不同的指针指向了相同的内存空间而已。深复制则需要另开辟内存空间,因为它是指针指向了不同的内存空间。

浅复制和深复制哪里相同?

它们都需要不同的指针。

类图

效果

真绵羊
克隆绵羊0
克隆绵羊1

Process finished with exit code 0

调用

package com.company;
public class Main {
    public static void main(String[] args) {
    // write your code here
        Sheep oneSheep = new Sheep();
        oneSheep.getName();
        Sheep anotherSheep = oneSheep.customCloneMethod();
        anotherSheep.getName();
        Sheep oneMoreSheep = oneSheep.customCloneMethod();
        oneMoreSheep.getName();
    }
}

克隆的接口

package com.company;
public interface CommonCloneInterface {
    CommonCloneInterface customCloneMethod();
}

被克隆的类型

package com.company;
public class Sheep implements CommonCloneInterface {
    private String name;
    static int cloneCounter = 0;
    public String getName() {
        if (this.name == null)System.out.println("真绵羊");
        else System.out.println(name);
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public Sheep customCloneMethod() {
        Sheep cloneObject = new Sheep();
        cloneObject.setName("克隆绵羊" + cloneCounter++);
        return cloneObject;
    }
}

多谢捧场

如果您觉得我的文章有价值,那么赏脸打赏一个,鄙人感激不尽。不过,不打赏看看也是好的,如果有不对的地方,还请您多多指正。

上一篇 下一篇

猜你喜欢

热点阅读