1. 程式人生 > >python面向物件之抽象工廠設計模式

python面向物件之抽象工廠設計模式



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.抽象工廠模式非常靈活,可以再進行擴充套件,生產不同種類的物件,建立各種方法,即新增“工廠”類,再定義函式。