• 简单工厂模式


    模式说明

    简单工厂模式又称之为静态工厂方法,属于创建型模式。在简单工厂模式中,可以根据传递的参数不同,返回不同类的实例。简单工厂模式定义了一个类,这个类专门用于创建其他类的实例,这些被创建的类都有一个共同的父类。

    模式结构图

    程序示例

    说明:加减乘除运算,继承同一个运算类。运算工厂根据传入参数返回相应的运算类。

    Python代码:

     1 class Operation(object):
     2     def __init__(self, op1,op2):
     3         self.op1 = op1
     4         self.op2 = op2
     5 
     6     def GetResult():
     7         pass
     8 
     9 class Add(Operation):
    10     def GetResult(self):
    11         return self.op1+self.op2
    12 class Sub(Operation):
    13     def GetResult(self):
    14         return self.op1-self.op2
    15 class Mul(Operation):
    16     def GetResult(self):
    17         return self.op1*self.op2
    18 class Div(Operation):
    19     def GetResult(self):
    20         try:
    21            return self.op1/self.op2
    22         except:
    23             print 'divided by zero!'
    24             return 0
    25 class undef(Operation):
    26     def GetResult(self):
    27         print 'undefine operation'
    28         return 0
    29 
    30 class OperationFactory(object):
    31     def CreateOperation(self,operation,op1,op2):
    32         self.operations = {
    33                     '+':Add(op1,op2),
    34                     '-':Sub(op1,op2),
    35                     '*':Mul(op1,op2),
    36                     '/':Div(op1,op2)
    37                     }
    38         if operation in self.operations.keys():
    39             return self.operations[operation]
    40         else:
    41             return undef(op1,op2)
    42 
    43 if __name__=='__main__':
    44     factory = OperationFactory()
    45     operation = factory.CreateOperation('+',1,2)
    46     print operation.GetResult()
    47 
    48     operation = factory.CreateOperation('-',1,2)
    49     print operation.GetResult()
    50 
    51     operation = factory.CreateOperation('*',1,2)
    52     print operation.GetResult()
    53 
    54     operation = factory.CreateOperation('/',1,2)
    55     print operation.GetResult()
    56 
    57     operation = factory.CreateOperation('#',1,2)
    58     print operation.GetResult()

    运行结果:

      

    参考来源:

    http://www.cnblogs.com/chenssy/p/3679190.html

    http://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html

    http://www.cnblogs.com/Terrylee/archive/2006/07/17/334911.html

  • 相关阅读:
    ModelMap和ModelAndView的作用
    jquery 临时存值
    条件sql ibatis
    IBATIS动态SQL
    MyEclipse 快捷键
    jquery $用法
    弹窗案例
    Ibatis sql语句1
    Ibatis sql语句
    jQuery的三种$()
  • 原文地址:https://www.cnblogs.com/cotton/p/3930697.html
Copyright © 2020-2023  润新知