Last active
October 3, 2018 01:04
-
-
Save sooch/99389bd49ef07e4ea84436b220e7e33d to your computer and use it in GitHub Desktop.
effective java builder pattern for 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
#-*- coding: utf-8 -*- | |
class NutritionFacts(object): | |
def __init__(self, builder): | |
self.serving_size = builder.serving_size | |
self.servings = builder.servings | |
self.calories = builder.calories | |
self.fat = builder.fat | |
self.sodium = builder.sodium | |
self.carbohydrate = builder.carbohydrate | |
class Builder(object): | |
def __init__(self, serving_size, servings): | |
self.serving_size = serving_size | |
self.servings = servings | |
self.calories = None | |
self.fat = None | |
self.sodium = None | |
self.carbohydrate = None | |
def set_calories(self, val): | |
self.calories = val | |
return self | |
def set_fat(self, val): | |
self.fat = val | |
return self | |
def set_sodium(self, val): | |
self.sodium = val | |
return self | |
def set_carbohydrate(self, val): | |
self.carbohydrate = val | |
return self | |
def build(self): | |
return NutritionFacts(self) | |
nf = NutritionFacts.Builder(100, 5) \ | |
.set_calories(300) \ | |
.set_fat(10) \ | |
.set_sodium(20) \ | |
.set_carbohydrate(30) \ | |
.build() | |
print(nf.calories) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment