class TrueFactory():
def get_value(self):
return True
class FalseFactory():
def get_value(self):
return False
class IntegerValidator():
def validate(self, x):
if x == 1:
return 1
elif x == 0:
return 0
else:
raise Exception(f"{x} cannot be marshalled into a boolean value. 0 = true, 1 = false.")
class BooleanValueParser():
def __init__(self):
self.true_factory = TrueFactory()
self.false_factory = FalseFactory()
self.validator = IntegerValidator()
def marshal_boolean(self, x):
x = self.validator.validate(x)
if x == 0:
return self.true_factory.get_value()
else:
return self.false_factory.get_value()