首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >设计模式:原型模式(Prototype)(1)

设计模式:原型模式(Prototype)(1)

作者头像
firstxinjie
发布2025-04-24 13:09:41
发布2025-04-24 13:09:41
10400
代码可运行
举报
文章被收录于专栏:X#(XSharp)X#(XSharp)
运行总次数:0
代码可运行

又称克隆模式(Clone)。

在 VFP 中,大多数基类都有一个 CloneObject 方法。但是很可惜,它只能在开发环境下使用。因此,可能只有开发过 IDE 工具的开发者才可能对其有兴趣。原型模式却可以在运行环境中克隆类实例。

在现代OOP编程语言中,原型模式中对象可以使用浅拷贝和深拷贝。浅拷贝类似于 VFP 中变量的按引用传递;深拷贝类似于 VFP 中使用 CreateObject() 重新创建一个对象。因此,按照严格的意义来说,在 VFP 中仅仅能够实现所谓的深拷贝。

那么,在 VFP 中的原型模式是怎么样的呢?其实就是需要一个可以全局调用的函数:

代码语言:javascript
代码运行次数:0
运行
复制
Public a, b
m.a = Createobject("custom")
m.b = Clone(m.a)

Function Clone(toSourceObject)
	Local lcTempVCX
	m.lcTempVCX = Sys(2015)

	m.toSourceObject.SaveAsClass(m.lcTempVCX, m.toSourceObject.Name)

	Return Newobject(toSourceObject.Name, m.lcTempVCX)
Endfunc

这样,我们就可以在运行时刻获得一个对象的克隆体。

未完待续......

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 xinjie的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档