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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大话涉及模式Python实现-简单工厂模式相关的知识,希望对你有一定的参考价值。

简单工厂模式(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实现-简单工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

java 之 抽象工厂模式(大话设计模式)

java 之 工厂模式(大话设计模式)

《大话设计模式》——简单工厂模式(Python版)

python 大话设计模式:简单工厂模式(蟒版)

大话设计模式读书笔记--1.简单工厂模式

大话设计模式之简单工厂模式