溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python設(shè)計(jì)模式之簡(jiǎn)單工廠模式實(shí)例詳解

發(fā)布時(shí)間:2020-09-28 02:48:28 來源:腳本之家 閱讀:135 作者:Andy冉明 欄目:開發(fā)技術(shù)

本文實(shí)例講述了Python設(shè)計(jì)模式之簡(jiǎn)單工廠模式。分享給大家供大家參考,具體如下:

簡(jiǎn)單工廠模式(Simple Factory Pattern):是通過專門定義一個(gè)類來負(fù)責(zé)創(chuàng)建其他類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類.

下面使用簡(jiǎn)單工廠模式實(shí)現(xiàn)一個(gè)簡(jiǎn)單的四則運(yùn)算

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
'''
大話設(shè)計(jì)模式
用任意一種面向?qū)ο笳Z言實(shí)現(xiàn)一個(gè)計(jì)算器控制臺(tái)程序。要求輸入兩個(gè)數(shù)和運(yùn)算符號(hào),得到結(jié)果
設(shè)計(jì)模式——簡(jiǎn)單工廠模式
簡(jiǎn)單工廠模式(Simple Factory Pattern):是通過專門定義一個(gè)類來負(fù)責(zé)創(chuàng)建其他類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類。
'''
class Operation(object):
  '''
  四則運(yùn)算的父類,接收用戶輸入的數(shù)值
  '''
  def __init__(self, number1=0, number2=0):
    self.num1 = number1
    self.num2 = number2
  def GetResult(self):
    pass
  pass
#加法運(yùn)算類
class OperationAdd(Operation):
  def GetResult(self):
    return self.num1 + self.num2
#減法運(yùn)算類
class OperationSub(Operation):
  def GetResult(self):
    return self.num1 - self.num2
#乘法運(yùn)算類
class OperationMul(Operation):
  def GetResult(self):
    return self.num1 * self.num2
#除法運(yùn)算類
class OperationDiv(Operation):
  def GetResult(self):
    if self.num2 == 0:
      return '除數(shù)不能為0 '
    return 1.0*self.num1 / self.num2
#其他操作符類
class OperationUndef(Operation):
  def GetResult(self):
    return '操作符錯(cuò)誤'
#簡(jiǎn)單工廠類
class OperationFactory(object):
  def choose_oper(self,ch):
    if ch == '+':
      return OperationAdd()
    elif ch == '-':
      return OperationSub()
    elif ch == '*':
      return OperationMul()
    elif ch == '/':
      return OperationDiv()
    else:
      return OperationUndef()
if __name__ == "__main__":
  ch = ''
  while not ch == 'q':
    num1 = input('請(qǐng)輸入第一個(gè)數(shù)值: ')
    oper = str(raw_input('請(qǐng)輸入一個(gè)四則運(yùn)算符: '))
    num2 = input('請(qǐng)輸入第二個(gè)數(shù)值: ')
    # Operation(num1,num2)
    OF = OperationFactory()
    oper_obj = OF.choose_oper(oper)
    oper_obj.num1 = num1
    oper_obj.num2 = num2
    print '運(yùn)算結(jié)果為: ',oper_obj.GetResult()

運(yùn)行結(jié)果:

 請(qǐng)輸入第一個(gè)數(shù)值:  51
請(qǐng)輸入一個(gè)四則運(yùn)算符:  -
請(qǐng)輸入第二個(gè)數(shù)值:  15
運(yùn)算結(jié)果為:  36

這幾個(gè)類的結(jié)構(gòu)圖如下:

Python設(shè)計(jì)模式之簡(jiǎn)單工廠模式實(shí)例詳解

專門定義一個(gè)Operation類作為父類,加減乘除運(yùn)算類繼承Operation類,OperationFactory類用來決定什么時(shí)候創(chuàng)建對(duì)應(yīng)的類

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI