python 设计模式一
Tofloor
poster avatar
z85525006
deepin
2012-06-02 18:55
Author
由于找了很久,都找不到关于python的设计模式的相关书籍,就连算法和数据结构也是,
所以就将C#的设计模式转换过来.

这个例子是写了一个简单的例子,计算器.
  1. # coding:utf-8
  2. # 计算器
  3. # 暴风
  4. # 邮箱: [email protected]
  5. class Operation(object):
  6.     def __init__(self):
  7.         self.__numberA = 0.0
  8.         self.__numberB = 0.0
  9.     # NumberA.   
  10.     @property   
  11.     def NumberA(self):
  12.         return self.__numberA
  13.         
  14.     @NumberA.setter
  15.     def NumberA(self, value):
  16.         self.__numberA = value
  17.         
  18.     @NumberA.getter   
  19.     def NumberA(self):
  20.         return self.__numberA
  21.    
  22.     @NumberA.deleter
  23.     def NumberA(self):
  24.         del self.__numberA
  25.         
  26.     # NumberB   
  27.     @property   
  28.     def NumberB(self):
  29.         return self.__numberB
  30.         
  31.     @NumberB.setter
  32.     def NumberB(self, value):
  33.         self.__numberB = value
  34.         
  35.     @NumberB.getter   
  36.     def NumberB(self):
  37.         return self.__numberB
  38.    
  39.     @NumberB.deleter
  40.     def NumberB(self):
  41.         del self.__numberB
  42.          
  43.         
  44. class Add(Operation):   
  45.     def __init__(self):
  46.         Operation.__init__(self)
  47.         
  48.     def GetResult(self):
  49.         result = 0.0
  50.         result = self.NumberA + self.NumberB
  51.         return result
  52.         
  53.             
  54. if __name__ == "__main__":        
  55.     add = Add()
  56.     add.NumberA = 30
  57.     add.NumberB = 60
  58.     print add.GetResult()   
Copy the Code

简单的工厂模式.有不好的地方还请大家多多指教.
  1. # coding:utf-8
  2. # 计算器
  3. # 暴风
  4. # 邮箱: [email protected]
  5. class Operation(object):
  6.     def __init__(self):
  7.         self.__numberA = 0.0
  8.         self.__numberB = 0.0
  9.     # NumberA.   
  10.     @property   
  11.     def NumberA(self):
  12.         return self.__numberA
  13.         
  14.     @NumberA.setter
  15.     def NumberA(self, value):
  16.         self.__numberA = value
  17.         
  18.     @NumberA.getter   
  19.     def NumberA(self):
  20.         return self.__numberA
  21.    
  22.     @NumberA.deleter
  23.     def NumberA(self):
  24.         del self.__numberA
  25.         
  26.     # NumberB   
  27.     @property   
  28.     def NumberB(self):
  29.         return self.__numberB
  30.         
  31.     @NumberB.setter
  32.     def NumberB(self, value):
  33.         self.__numberB = value
  34.         
  35.     @NumberB.getter   
  36.     def NumberB(self):
  37.         return self.__numberB
  38.    
  39.     @NumberB.deleter
  40.     def NumberB(self):
  41.         del self.__numberB
  42.          
  43.         
  44. class Add(Operation):   
  45.     def __init__(self):
  46.         Operation.__init__(self)
  47.         
  48.     def GetResult(self):
  49.         result = 0.0
  50.         result = self.NumberA + self.NumberB
  51.         return result
  52.         
  53. class Sub(Operation):   
  54.     def __init__(self):
  55.         Operation.__init__(self)
  56.         
  57.     def GetResult(self):
  58.         result = 0.0
  59.         result = self.NumberA - self.NumberB
  60.         return result
  61. # 简单的工厂模式        
  62. class OperationFactory(object):            
  63.     def createOperate(self, operate):   
  64.         if "+" == operate:
  65.             return Add()
  66.         elif "-" == operate:   
  67.             return Sub()
  68.         # elif "*" == operate:
  69.         # elif "/" == operate:
  70.             
  71.             
  72. if __name__ == "__main__":        
  73.     operation = Operation()
  74.     operation = OperationFactory().createOperate("+")
  75.    
  76.     operation.NumberA = 30
  77.     operation.NumberB = 60
  78.     print operation.GetResult()   
  79.   
  80.     operation = OperationFactory().createOperate("-")
  81.     operation.NumberA = 30
  82.     operation.NumberB = 60
  83.     print operation.GetResult()
  84.    
Copy the Code
设计模式能让代码复用,更容易维护.现在我要修改加法类,或者增加其它 除法类,...都很方便,而不用改一大堆的代码.
所以python上我也要好好的发挥设计模式的威力,只能下个月开始使用 设计模式啦.
Reply Favorite View the author
All Replies
z85525006
deepin
2012-06-02 19:16
#1
下一节是  策策略模式, 简单的说就是对 算法的封装,
算法只是一种策略.
Reply View the author
cxbii
deepin
2012-06-02 19:20
#2
嗯嗯,围观之力顶
Reply View the author
cnchanghai
deepin
2012-06-02 23:39
#3
不懂,看气势挺NB
Reply View the author
jhkwei
deepin
2012-06-04 03:10
#4
四人帮的书,看过,不过差不多都忘记了。。
Reply View the author
a287740928
deepin
2012-06-04 04:19
#5
不懂,非专业,只是略懂c++和vb,哈哈
Reply View the author