1、使用简单工厂来创建:动物定义为抽象类,动物有抽象的Eat方法,狗和猫继承于动物,狗和猫中对Eat方法进行重写。 定义AnimalFactory来根据类型type来决定创建猫还是狗。 在客户端用动物工厂来创建狗和猫,并调用Eat方法。
时间: 2023-04-11 09:02:04 浏览: 76
工厂模式实现(比较简单,适合初学者)
好的,这是一个关于简单工厂模式的编程问题。以下是完整的lua closure factory代码:
```
-- 定义动物抽象类
local Animal = {}
function Animal:Eat()
print("动物正在进食...")
end
-- 定义狗类
local Dog = {}
function Dog:Eat()
print("狗正在啃骨头...")
end
-- 定义猫类
local Cat = {}
function Cat:Eat()
print("猫正在吃鱼...")
end
-- 定义动物工厂类
local AnimalFactory = {}
function AnimalFactory.CreateAnimal(type)
if type == "Dog" then
return Dog
elseif type == "Cat" then
return Cat
else
return nil
end
end
-- 客户端代码
local dog = AnimalFactory.CreateAnimal("Dog")
local cat = AnimalFactory.CreateAnimal("Cat")
dog:Eat()
cat:Eat()
```
这个程序会输出以下内容:
```
狗正在啃骨头...
猫正在吃鱼...
```
希望这个回答能够帮到你!
阅读全文