class truck:
def use(self):
return \"拉货\"
def __str__(self):
return \"大卡车\"


class minicar:

def use(self):
return \"带妹兜风\"
def __str__(self):
return \"小轿车\"


# 定义一个大卡车工厂,作用是创建对象
class truck_factory():
def makecar(self):
return truck()
def makewheel(self):
return \"生产大轮子\"


# 定义一个小汽车工厂
class car_factory():
def makecar(self):
return minicar()
def makewheel(self):
return \"生产小轮子\"


# 定义一个方法用于调用工厂类生产相关的对象产品
def Factorys():
#也可以在工厂列表中再添加工厂类
factory = [car_factory(),truck_factory()]
# 此处我选择了car_factory工厂进行对象的创建
return factory[0]


#定义一个“商店”类,类中创建方法用于展示“商品”对象。
class carstop:
def __init__(self,factory = None):
self.Factorys = factory

def showcar(self):
car = self.Factorys.makecar()
wheel = self.Factorys.makewheel()
print(\"*\"*25)
print(\"我是一辆%s\" % (car))
print(\"我能用%s%s\" %(car,car.use()))
print(\"%s 工厂也能够 %s\"%(car,wheel))
print(\"*\"*25)

# 实现对象调用
if __name__ ==\"__main__\":
carstop(Factorys()).showcar()

程序运行结果如下:
*************************
我是一辆小轿车
我能用小轿车带妹兜风
小轿车 工厂也能够 生产小轮子
*************************


抽象工厂模式之我见:
1.适合用在面向对象编程时,在创建一系列函数方法不确定,对象类型不确定时。
2.抽象工厂模型创建的对象没有个性,即生产的对象没有属性。若要添加属性,对其进行实例化。
3.抽象工厂模式非常灵活,可以再进行扩展,生产不同种类的对象,创建各种方法,即添加“工厂”类,再定义函数。



收藏 打印