Created
June 1, 2010 12:48
-
-
Save diofeher/420905 to your computer and use it in GitHub Desktop.
Builder Pattern implemented in Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
# -*- coding : utf-8 -*- | |
""" | |
@author: Diogenes Augusto Fernandes Herminio <diofeher@gmail.com> | |
""" | |
# Director | |
class Director(object): | |
def __init__(self): | |
self.builder = None | |
def construct_building(self): | |
self.builder.new_building() | |
self.builder.build_floor() | |
self.builder.build_size() | |
def get_building(self): | |
return self.builder.building | |
# Abstract Builder | |
class Builder(object): | |
def __init__(self): | |
self.building = None | |
def new_building(self): | |
self.building = Building() | |
# Concrete Builder | |
class BuilderHouse(Builder): | |
def build_floor(self): | |
self.building.floor ='One' | |
def build_size(self): | |
self.building.size = 'Big' | |
class BuilderFlat(Builder): | |
def build_floor(self): | |
self.building.floor ='More than One' | |
def build_size(self): | |
self.building.size = 'Small' | |
# Product | |
class Building(object): | |
def __init__(self): | |
self.floor = None | |
self.size = None | |
def __repr__(self): | |
return 'Floor: %s | Size: %s' % (self.floor, self.size) | |
#Client | |
if __name__=="__main__": | |
director = Director() | |
director.builder = BuilderHouse() | |
director.construct_building() | |
building = director.get_building() | |
print building |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment