使用简单工厂来创建:动物定义为抽象类,动物有抽象的Eat方法,狗和猫继承于动物,狗和猫中对Eat方法进行重写。 定义AnimalFactory来根据类型type来决定创建猫还是狗。 在客户端用动物工厂来创建狗和猫,并调用Eat方法。
时间: 2023-04-11 15:02:06 浏览: 120
好的,这是一个关于简单工厂模式的编程问题。以下是代码示例:
Animal.lua
```lua
-- 定义动物抽象类
Animal = {}
function Animal:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self
return o
end
function Animal:Eat()
-- 抽象方法,需要在子类中实现
end
```
Dog.lua
```lua
-- 定义狗类
Dog = Animal:new()
function Dog:Eat()
print("狗在吃骨头")
end
```
Cat.lua
```lua
-- 定义猫类
Cat = Animal:new()
function Cat:Eat()
print("猫在吃鱼")
end
```
AnimalFactory.lua
```lua
-- 定义动物工厂类
AnimalFactory = {}
function AnimalFactory:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self
return o
end
function AnimalFactory:createAnimal(type)
if type == "dog" then
return Dog:new()
elseif type == "cat" then
return Cat:new()
end
end
```
main.lua
```lua
-- 客户端代码
factory = AnimalFactory:new()
dog = factory:createAnimal("dog")
dog:Eat()
cat = factory:createAnimal("cat")
cat:Eat()
```
输出结果:
```
狗在吃骨头
猫在吃鱼
```
阅读全文