當我需要創建一些複雜的對象時,我更喜歡爲它編寫構建器。 到目前爲止這是:編寫構建器和如何使用非本地的最佳方式:python
class Builder(object):
def before(self):
do..
def build(self):
do stuff
def after(self):
do..
是單身,所以我一定要記住不要用建築參數自(線程重要),所以我需要通過許多參數生成器的方法中,或通過他們未完成的(半建)對象。或者每次創建新的建築物時創建建築物對象,這並不是一件好事。
但是當我開始使用python 3,我寧願助洗劑功能:
def builder():
param1 = None
param2 = None
def before(self):
do..
def build():
nonlocal param1
build object ...
def after(self):
do..
def ...(self):
do..
這似乎是更輕,線程安全的,不是嗎?這裏有風險嗎? 在哪裏/我可以如何應用非本地?
我現在rething Python的形式給出,以生成器模式我什麼,我發現是:
class Builder:
def build(self):
param = None
def _build_step1():
它給我生成器類,並使用build方法和嵌套方法在建築物內物體簡單的方法的參數化。
那麼爲什麼它是一個單身? – delnan
好吧,爲了避免創建許多構建器對象(它很重,所以我更喜歡方法),我寫了一些性能真正計數的地方,但沒有時間測試和計算所有這些東西。 –
我敢打賭,你的表現擔憂是完全錯誤的。如果構建器對象本身很小,重複分配和取消分配要比跳過必要的箍來減少單例的缺點要便宜得多。如果構建器需要一些龐大的只讀數據結構,您可以在構建器中共享*,而不是在多個客戶端之間共享一個構建器。人們可以在不引入單例的情況下緩存或回收對象。你濫用這種設計模式。 – delnan