--父类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
lua设计模式之抽象工厂模式
最新推荐文章于 2018-04-15 08:41:00 发布