大話デザインモデルのPython実現【簡易工場モデル】
1590 ワード
# coding=utf8
__author__ = 'smilezjw'
class Operation(object):
def __init__(self):
self._numberA = 0
self._numberB = 0
def get_result(self):
pass
class OperationAdd(Operation):
def get_result(self):
return self._numberA + self._numberB
class OperationSub(Operation):
def get_result(self):
return self._numberA - self._numberB
class OperationMul(Operation):
def get_result(self):
return self._numberA * self._numberB
class OperationDiv(Operation):
def get_result(self):
try:
return self._numberA / self._numberB
except ZeroDivisionError:
print 'Divide by zero!'
return 0
class OperationFactory(object):
def createOperation(self, op):
if op == '+':
operation = OperationAdd()
elif op == '-':
operation = OperationSub()
elif op == '*':
operation = OperationMul()
elif op == '/':
operation = OperationDiv()
else:
print 'Invalid operator!'
return None
return operation
if __name__ == '__main__':
op = raw_input('operator: ')
numA = input('first number: ')
numB = input('second number: ')
factory = OperationFactory()
operation = factory.createOperation(op)
operation._numberA = numA
operation._numberB = numB
print operation.get_result()
モードフィーチャー:条件に応じて異なる機能を個別のファクトリクラスで生成するクラスの例.