一种简单对象的实现方式

本文详细介绍了对象工厂模式的概念、实现方式及其在简化脚本编写中的应用。通过实例展示了如何使用表来表示对象,并解释了成员方法的定义与调用过程。

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

先来看一段程序:

function create(name, id)
      local obj = { name = name, id = id }
      function obj:SetName(name)
        self.name = name
      end
      function obj:GetName()
        return self.name
      end
      function obj:SetId(id)
        self.id = id
      end
      function obj:GetId()
        return self.id
      end
      return obj
   end

   o1 = create("Sam", 001)

   print("o1's name:", o1:GetName(), "o1's id:", o1:GetId())

   o1:SetId(100)
   o1:SetName("Lucy")

   print("o1's name:", o1:GetName(), "o1's id:", o1:GetId())

输出结果:

o1's name: Sam o1's id: 1
o1's name: Lucy o1's id: 100

 

对象工厂模式:

如前面代码的create函数

用表表示对象:

把对象的数据和方法都放进一张表内,虽然没有隐藏私有成员,但对于简单脚本来说可以完全接受

成员方法的定义:

function obj:method(a1,a2,…)…end --等价于
    function obj.method(self,a1,a2,…)…end --等价于 
    obj.method=function(self,a1,a2,...)...end

成员方法的调用:

obj:method(a1,a2,...) --等价于
    obj.method(obj,a1,a2,...)

转载于:https://www.cnblogs.com/liwenbin/archive/2012/09/12/2682640.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值