lua设计模式之抽象工厂模式

本文探讨了使用SQLServer和Access作为数据库管理系统进行用户与部门数据管理的过程,包括插入记录和获取记录的操作。展示了如何根据不同选择创建相应的工厂对象来实现不同数据库的特定操作。

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

--父类A
IUser = {}
function IUser:new(o)
    o = o or {}
    setmetatable(o,self)
    self.__index = self
    return o;
end
--父类A的子类A1
SqlServerUser = IUser:new()
function SqlServerUser:Insert()
    print("在SQL Server中给User表增加一条记录")
end
function SqlServerUser:GetUserRecord()
    print("在SQL Server中User表获取一条记录")
end

--父类A的子类A2
AccessUser = IUser:new()
function AccessUser:Insert()
    print("在Access中给User表增加一条记录")
end
function AccessUser:GetUserRecord()
    print("在Access中User表获取一条记录")
end
--父类B
IDepartment = {}
function IDepartment:new(o)
    o = o or {}
    setmetatable(o,self)
    self.__index = self
    return o;
end
--父类B的子类B1
SqlServerDepartment = IDepartment:new()
function SqlServerDepartment:Insert()
    print("在SQL Server中给Department表增加一条记录")
end
function SqlServerDepartment:GetDepartmentRecord()
    print("在SQL Server中的Department表获取一条记录")
end
--父类B的子类B2
AccessDepartment = IDepartment:new()
function AccessDepartment:Insert()
    print("在Access中给Department表增加一条记录")
end
function AccessDepartment:GetDepartmentRecord()
    print("在Access中的Department表获取一条记录")
end

--父类C
IFactory = {}
function IFactory:new(o)
    o = o or {}
    setmetatable(o,self)
    self.__index = self
    return o;
end
--父类C的子类C1
SqlServerFactory = IFactory:new()
function SqlServerFactory:GetUser()
    --返回A1的对象
    return SqlServerUser:new()
end
function SqlServerFactory:GetDepartment()
    --返回B1的对象
    return SqlServerDepartment:new()
end

AccessFactory = IFactory:new()
function AccessFactory:GetUser()
    return AccessUser:new()
end
function AccessFactory:GetDepartment()
    return AccessDepartment:new()
end
--输入操作
choice = io.read()
factory = nil
if choice == "Sqlserver" then
    factory = SqlServerFactory:new()
elseif choice == "Access" then
    factory = AccessFactory:new()
end

if factory ~= nil then
    user = factory:GetUser()
    department = factory:GetDepartment()
    user:Insert()
    user:GetUserRecord()
    department:Insert()
    department:GetDepartmentRecord()
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值