抽象工廠是什麼
抽象工廠是為了提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。
例子我建立了乙個抽象工廠類,它的表現取決於我們選擇什麼工廠來初始化它。例子中,抽象工廠類是寵物店(petshop),它有乙個動作(show_pet)用來展示動物,我們如果用貓(cat)初始化寵物店,展示時,它會」喵嗚「。
**實現例子
import random
class petshop(object):
"""寵物店"""
def __init__(self, animal_factory=none):
"""pet_factory是我們的抽象工廠"""
self.pet_factory = animal_factory
def show_pet(self):
"""使用抽象工廠創造和展示寵物"""
pet = self.pet_factory()
print("我們有乙隻可愛的 {}".format(pet))
print("它看到了你,對你 {}".format(pet.speak()))
class dog(object):
def speak(self):
return '汪汪'
def __str__(self):
return '小狗'
class cat(object):
def speak(self):
return '喵嗚'
def __str__(self):
return '小貓'
# 隨機一種動物
def random_animal():
return random.choice([dog, cat])()
if __name__ == "__main__":
cat_shop = petshop(cat)
cat_shop.show_pet()
shop = petshop(random_animal)
for _ in range(3):
shop.show_pet()
print('=' * 20)
### 輸出 ###
我們有乙隻可愛的 小貓
它看到了你,對你 喵嗚
我們有乙隻可愛的 小狗
它看到了你,對你 汪汪
********************
我們有乙隻可愛的 小貓
它看到了你,對你 喵嗚
********************
我們有乙隻可愛的 小狗
它看到了你,對你 汪汪
********************
borg模式是什麼
brog模式(也稱monostata模式)可以用來實現單例,但是不是指乙個類只有乙個例項,它會多個具有相同屬性的例項。換一句話說,它關注於共享屬性為不是共享例項。
例子首先你需要知道的是,python例項的屬性儲存在乙個叫做__dict__
的字典中。通常,每個例項都會有乙個這樣的字典,但是,borg 模式修改了這一規定,從而使每個例項有乙個相同的字典。
在這個例子中,__shared_state
屬性會成為所有例項的公共字典,這是通過確保當初始化乙個新的例項時(__init__()
)方法執行時),將__dict__
屬性賦值為類的靜態變數_shared_state
來實現的。
**實現例子
class borg(object):
__shared_state = {}
def __init__(self):
self.__dict__ = self.__shared_state
self.state = 'init'
def __str__(self):
return self.state
class yourborg(borg):
pass
if __name__ == '__main__':
rm1 = borg()
rm2 = borg()
rm1.state = 'idle'
rm2.state = 'running'
print('rm1: '.format(rm1))
print('rm2: '.format(rm2))
rm2.state = 'zombie'
print('rm1: '.format(rm1))
print('rm2: '.format(rm2))
print('rm1 id: '.format(id(rm1)))
print('rm2 id: '.format(id(rm2)))
rm3 = yourborg()
print('rm1: '.format(rm1))
print('rm2: '.format(rm2))
print('rm3: '.format(rm3))
### 輸出 ###
rm1: running
rm2: running
rm1: zombie
rm2: zombie
rm1 id: 2306371518816
rm2 id: 2306371552704
rm1: init
rm2: init
rm3: init
建造者模式是什麼
例子**實現例子工廠模式是什麼
例子**實現例子lazy_evalution模式是什麼
例子**實現例子池模式是什麼
例子**實現例子原型模式是什麼
例子**實現例子
設計模式之建立類模式PK
建立類模式包括 工廠方法模式 建造者模式 抽象工廠模式 單例模式 原型模式 建立類模式能夠提供物件的建立和管理職責.其中單例模式和原型模式非常容易理解,單例模式是要保持在記憶體中只有乙個物件,原型模式是要求通過複製的方式產生乙個新的物件,這兩個不容易混淆.工廠方法模式注重的是整體物件的建立方法,而建...
設計模式之建立類模式PK
建立類模式包括 工廠方法模式 建造者模式 抽象工廠模式 單例模式 原型模式 建立類模式能夠提供物件的建立和管理職責.其中單例模式和原型模式非常容易理解,單例模式是要保持在記憶體中只有乙個物件,原型模式是要求通過複製的方式產生乙個新的物件,這兩個不容易混淆.工廠方法模式注重的是整體物件的建立方法,而建...
設計模式複習 2 建立類模式
定義 單例模式 餓漢形式 author emma zhang date 2019 2 15 public class singletonforhunger 訪問例項 public static singletonforhunger getsingletonforhunger public stati...