码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-10-30 14:39:45      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:obj   www.   tar   sign   image   das   控制   法律   nfa   

简单工厂模式(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实现-简单工厂模式

标签:obj   www.   tar   sign   image   das   控制   法律   nfa   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!