python版本工厂方法

工厂方法也叫虚构造器,它是一个方法,对不同的输入参数返回不同的对象。工厂方法将具体的实例化延迟到子类中实现,把选择判断逻辑交给客户端,让客户端来实现实例化
# -*- coding:UTF-8 -*- from abc import ABCMeta, abstractmethod class Operation(metaclass=ABCMeta): def __init__(self): self.numberA = 0.0 self.numberB = 0.0 @abstractmethod def get_result(self): pass class OperationAdd(Operation): def get_result(self): return self.numberA + self.numberB class OperationMul(Operation): def get_result(self): return self.numberA * self.numberB class OperationSub(Operation): def get_result(self): return self.numberA - self.numberB class OperationDiv(Operation): def get_result(self): return self.numberA / self.numberB class IFactory(metaclass=ABCMeta): @abstractmethod def create_operation(self): pass class AddFactory(IFactory): def create_operation(self): return OperationAdd() class SubFactory(IFactory): def create_operation(self): return OperationSub() class MulFactory(IFactory): def create_operation(self): return OperationMul() class DivFactory(IFactory): def create_operation(self): return OperationDiv() if __name__ == "__main__": operFactory = AddFactory() oper = operFactory.create_operation() oper.numberA = 1 oper.numberB = 2 print(oper.get_result())
增加一个乘方就变得很简单了:
class OperationPower(Operation): def get_result(self): return math.pow(self.numberA, self.numberB) class PowerFactory(IFactory): def create_operation(self): return OperationPower() if __name__ == "__main__": operFactory = PowerFactory() oper = operFactory.create_operation() oper.numberA = 2 oper.numberB = 3 print(oper.get_result())

浙公网安备 33010602011771号