面向对象的设计模式 ——复制模式

复制模式:先复制实例里面引用指向的实例,然后再赋值外面的实例。

赋值模式主要是解决深复制的问题,说到深赋值那么就是有浅复制。

浅复制:从一个实例复制到另外一个实例的时候,基本数据类型都直接复制,同样引用数据类型的也直接复制

就会出现多个实例的成员变量中引用指向同一个实例(内存空间)

深复制:就是如果实例中的成员变量有引用的,先把引用指向的实例先复制一份,当外层实例复制的时候,用private构造函数先把引用指向的实例传给新外层实例。

class A {
    private int n1;
    
    public void setN1(int n1){
        this.n1 = n1;
    }
    
    public int getN1(){
        return n1;
    }
    public A copy(){
        A a = new A();
        a.n1 = n1;
        return a;
    }
    
}

class B{
    private int n2;
    private A a;

    private B(A a){              //这个私有构造方法用于copy()
        this.a = a.copy();
    }
    
    public void setN2(int n2){
        this.n2 = n2;
    }
    
    public int getN2(){
        return n2;
    }

    public void setA(int n1){
        a.setN1(n1);
    }
    public B copy(){
        B b = new B(this.a);
        return b;
        
    }


}

猜你喜欢

转载自blog.csdn.net/weixin_39337047/article/details/88601975