原型模式

本文介绍了原型模式的概念、实现方式及其应用场景。原型模式是一种创建型模式,通过复制已有的实例来创建新对象,避免了创建过程中的复杂操作。文章还探讨了Java中实现原型模式的两种方法:浅复制和深复制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、原型模式的概念

原型模式是创建型模式,通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例

被复制的实例就是我们所称的“原型”,这个原型是可定制的

客户端(Client):提出创建对象的请求

抽象原型(Prototype):一个Java接口或Java抽象类,此角色给出所有的具体原型类所需的接口

具体原型(ConcretePrototype):被复制的对象

 

二、原型模式的实现

//抽象原型
public Interface Prototype{
    public Object clone();
}
//具体原型
public class ConcretePrototype implements Prototype{
    public Object clone(){
        return new ConcretePrototype();
    }
}
//客户端
public class Client{
    private Prototype prototype;

    public Client(Prototype prototype){
        this.prototype = prototype;
    }
    
    public Object create(){
        return prototype.clone();
    }
}

 

三、原型模式的应用

在需要重复地创建相似对象时可以考虑使用原型模式

 

四、原型の其他问题

Java中的原型模式(克隆)

public class Prototype implements Cloneable{

    private Prototype prototype;
    //重写克隆方法
    public Prototype clone(){
		try{
			prototype = (Prototype)super.clone();
		}catch(CloneNotSupportedException e){
			e.printStackTrace();
		}
		return prototype; 
	}
}
public class ConcretePrototype extends Prototype{
    public void method(){
        //TODO
    }
}
public class Client{
    public static void main(String[] args){
        ConcretePrototype concreteProtopyte = new ConcretePrototype();
        ConcretePrototype newInatance = (ConcretePrototype)concreteProtopyte.clone();
    }
}

浅复制和深复制

如果需要实现浅克隆,通过覆盖Object类的clone()方法可以实现。
如果需要实现深克隆,可以通过覆盖Object类的clone()方法实现,也可以通过序列化(Serialization)等方式来实现。

 

五、Reference

维基百科

23种设计模式(5):原型模式

《JAVA与模式》之原型模式

Java提高篇——对象克隆(复制)

设计模式读书笔记-----原型模式

 

六、Resource

大话设计模式

Head First 设计模式

Java设计模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值