java原型设计模式
原型模式的思想:将一个对象作为原型,对其进行复制,克隆,产生一个和原对象类似的新对象。
由上可见,一个原型类,只需要实现cloneable接口,复写clone方法。
java中的克隆,有两种:深浅之分,具体可看http://blog.csdn.net/zhangjg_blog/article/details/18369201/
首先是浅复制:对基本类型重新开辟空间,对引用类型,依旧指向原对象所指向的
public class Prototype implements Cloneable{ public Objec clone()throws CloneNotSupportedException{ Prototype proto = (Prototype)super.clone(); return proto; } }
再看深复制:复制该对象,基本类型,引用类型都是重新开辟空间.
深复制需要采用流的形式读入当前对象的二进制输入,再写出二进制数据对应的对象。
关于输入输出,看http://blog.csdn.net/zsw12013/article/details/6534619
public class Protopyte implements Cloneable,Serializable{ private String string; public Object deepClone() throws IOException,ClassNotFoundException{ //写入当前对象的二进制流 ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(this); //读出二进制流产生的新对象 ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteAray()); ObjectInputStream ois = new ObjectInputStream(bis); return ois.readObject(); } get,set }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人