내가 복잡한 빌더를 작성해야 할 때 빌더를 작성하는 것이 좋습니다. 지금까지였습니다 :작성자를 작성하는 가장 좋은 방법은 nonlocal : python
class Builder(object):
def before(self):
do..
def build(self):
do stuff
def after(self):
do..
나는 건물 매개 변수에 대한 자기 (스레드에 대한 중요한)를 사용하지 않는 명심해야한다 그래서 싱글, 그래서 내가 빌더의 방법 중 많은 매개 변수를 전달하거나, (그들은 미완성 통과해야합니다 하프 - 빌드) 객체. 또는 때마다 내가 좋은 aproach되지 않습니다 새 건물 개체를 만들려면 빌더 개체를 만듭니다. 내가 파이썬 3를 사용하여 시작할 때
그러나, 나는 함수로 빌더 선호 : 그것은
def builder():
param1 = None
param2 = None
def before(self):
do..
def build():
nonlocal param1
build object ...
def after(self):
do..
def ...(self):
do..
라이터하고 스레드에 안전 할 것입니다되지는? 여기 어떤 위험이 있니? /non/local 다른 곳에서 어떻게 적용 할 수 있습니까? 나는 지금 내가 뭘 찾았는지 패턴에게 I를 빌더 파이썬 aproach을 rething하고
입니다 : 나에게 빌더 클래스와 구축 방법 및 중첩 방법 안에 건물 객체를 사용하는 쉬운 방법의 매개 변수화를 제공
class Builder:
def build(self):
param = None
def _build_step1():
.
왜 싱글 톤입니까? – delnan
글쎄, 많은 빌더 객체를 만드는 것을 피하기 위해 (무겁기 때문에 메서드를 선호합니다), 성능이 실제로 중요하지만 테스트 할 시간이없는 sth를 작성합니다. –
나는 당신의 성과에 대한 우려가 완전히 잘못된 것이라고 내기를 기꺼이합니다. 빌더 객체 자체가 작 으면, 싱글 톤의 단점을 줄이는데 필요한 농구대를 뛰어 넘는 것보다 반복적으로 할당 및 할당 해제하는 것이 훨씬 저렴합니다. 빌더에 필요한 거대한 읽기 전용 데이터 구조가있는 경우 여러 클라이언트간에 하나의 빌더를 공유하는 대신 빌더간에 * * * 공유 할 수 있습니다. 싱글 톤을 도입하지 않고도 객체를 캐시 또는 재활용 할 수 있습니다. 당신은 그 디자인 패턴을 오용하고 있습니다. – delnan