原型模式(Prototype)

一、定义

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。

二、例子

原型(实际上是implements了Cloneable接口,进而重写clone()方法):

package com.wuychn.prototype;

public class ProtoType implements Cloneable {
    
    private String name;

    @Override
    public ProtoType clone() {
        try {
            return (ProtoType) super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return null;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

测试代码:

package com.wuychn.prototype;

public class Test {

    public static void main(String[] args) {
        ProtoType pt1 = new ProtoType();
        pt1.setName("protoType_1");
        ProtoType pt2 = pt1.clone();
        System.out.println(pt1 == pt2);
        System.out.println(pt1.getClass() == pt2.getClass());
        pt2.setName("protoType_2");
        System.out.println(pt1.getName() + " " + pt2.getName());
    }

}

克隆还分为浅克隆和深克隆,详情见我的另一篇博文http://blog.sina.com.cn/s/blog_8a3eec6f0102xm1w.html

三、优缺点

优点:

如果创建新的对象比较复杂时,可以利用原型模式简化对象的创建过程,同时也能够提高效率。

可以使用深克隆保持对象的状态。

原型模式提供了简化的创建结构。

缺点:

在实现深克隆的时候可能需要比较复杂的代码。

需要为每一个类配备一个克隆方法,而且这个克隆方法需要对类的功能进行通盘考虑,这对全新的类来说不是很难,但对已有的类进行改造时,不一定是件容易的事,必须修改其源代码,违背了“开闭原则”。


原文:https://blog.csdn.net/u013256816/article/details/50981322

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值