首页 > 编程语言 > 详细

大话涉及模式Python实现-简单工厂模式

时间:2017-10-30 12:38:59      阅读:294      评论:0      收藏:0      [点我收藏+]

简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类.

下面使用简单工厂模式实现一个简单的四则运算

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 __author__ = Andy
 5 
 6 ‘‘‘
 7 大话设计模式
 8 用任意一种面向对象语言实现一个计算器控制台程序。要求输入两个数和运算符号,得到结果
 9 设计模式——简单工厂模式
10 简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
11 ‘‘‘
12 
13 class Operation(object):
14     ‘‘‘
15     四则运算的父类,接收用户输入的数值
16     ‘‘‘
17     def __init__(self, number1=0, number2=0):
18         self.num1 = number1
19         self.num2 = number2
20 
21     def GetResult(self):
22         pass
23     pass
24 
25 #加法运算类
26 class OperationAdd(Operation):
27     def GetResult(self):
28         return self.num1 + self.num2
29 
30 #减法运算类
31 class OperationSub(Operation):
32     def GetResult(self):
33         return self.num1 - self.num2
34 
35 #乘法运算类
36 class OperationMul(Operation):
37     def GetResult(self):
38         return self.num1 * self.num2
39 
40 #除法运算类
41 class OperationDiv(Operation):
42     def GetResult(self):
43         if self.num2 == 0:
44             return 除数不能为0 
45         return 1.0*self.num1 / self.num2
46 
47 #其他操作符类
48 class OperationUndef(Operation):
49     def GetResult(self):
50         return 操作符错误
51 
52 #简单工厂类
53 class OperationFactory(object):
54     def choose_oper(self,ch):
55         if ch == +:
56             return OperationAdd()
57         elif ch == -:
58             return OperationSub()
59         elif ch == *:
60             return OperationMul()
61         elif ch == /:
62             return OperationDiv()
63         else:
64             return OperationUndef()
65 
66 if __name__ == "__main__":
67     ch = ‘‘
68     while not ch == q:
69         num1 = input(请输入第一个数值:  )
70         oper = str(raw_input(请输入一个四则运算符:  ))
71         num2 = input(请输入第二个数值:  )
72         # Operation(num1,num2)
73         OF = OperationFactory()
74         oper_obj = OF.choose_oper(oper)
75         oper_obj.num1 = num1
76         oper_obj.num2 = num2
77         print 运算结果为: ,oper_obj.GetResult()

这几个类的结构图如下:

技术分享

 专门定义一个Operation类作为父类,加减乘除运算类继承Operation类,OperationFactory类用来决定什么时候创建对应的类

 


作者:Andy
出处:http://www.cnblogs.com/onepiece-andy/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

大话涉及模式Python实现-简单工厂模式

原文:http://www.cnblogs.com/onepiece-andy/p/python-simple-factory-pattern.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!