创建型模式-原型模式

在这里插入图片描述

/*
 * 原型模式用于复制已有对象,以提高相同类型对象的创建效率。
 * 角色1:抽象原型类Prototype,定义克隆原型对象的抽象方法。
 * 角色2:具体原型类ConcretePrototype,作为Prototype的子类,重写抽象方法。
 * 要点:Client关联Prototype。
 * 注意:通过克隆方法创建的对象是全新的对象,在内存中拥有新的地址。
 * 本例是通用实现方法。
 */
abstract class Prototype {  //角色1:抽象原型类Prototype
    protected String attribute;  //属性

    public Prototype(String attribute) { //构造器
        this.attribute = attribute;
    }

    public String getAttribute() {  //getter方法
        return attribute;
    }

    public abstract Prototype clone();  //抽象的克隆方法
}

class ConcretePrototypeA extends Prototype {  //角色2:具体原型类
    public ConcretePrototypeA(String attribute) {  //构造器
        super(attribute);  //调用父类的构造器
    }

    @Override
    public Prototype clone() {  //重写抽象的克隆方法
        //创建一个原型对象
        Prototype prototype = new ConcretePrototypeA(getAttribute());
        return prototype;  //返回一个原型对象
    }
}

class ConcretePrototypeB extends Prototype {
    public ConcretePrototypeB(String attribute) {
        super(attribute);
    }

    @Override
    public Prototype clone() {
        Prototype prototype = new ConcretePrototypeB(getAttribute());
        return prototype;
    }
}

public class Client {
    static Prototype prototypeA, copyA;  //Client关联prototype
    static Prototype prototypeB, copyB;

    // 编写测试代码,测试原型模式
    public static void main(String[] args) {
        prototypeA = new ConcretePrototypeA("原型对象A");
        copyA = prototypeA.clone();  //克隆原型对象
        System.out.println("原型对象:" + prototypeA.getAttribute());
        System.out.println("克隆对象:" + copyA.getAttribute());

        prototypeB = new ConcretePrototypeB("原型对象B");
        copyB = prototypeB.clone();
        System.out.println("原型对象:" + prototypeB.getAttribute());
        System.out.println("克隆对象:" + copyB.getAttribute());
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值