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

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

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

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

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

深复制:就是如果实例中的成员变量有引用的,先把引用指向的实例先复制一份,当外层实例复制的时候,用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;
        
    }


}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值