跳到主要內容


Python-設計模式-工廠模式

Python

設計模式

以生產Pizza為例子

定義Pizza類別以及其子類別

class pizza: 
   def __init__(self):
      self.taste = 'material'
      self.place = ''
   def make(self):
       print('put %s on pizza' % self.taste)
   def bake(self):
       print('put in oven')
   def finish(self):
       print('You can eat')
   def PrintPlace(self):
       print(self.place)
   def run(self):
       self.make()
       self.bake()
       self.finish()
       self.PrintPlace()
class baconPizza(pizza):
   def __init__(self):
       super().__init__()
       self.taste = 'bacon'
class seafoodPizza(pizza):
   def __init__(self):
       super().__init__()
           self.taste = 'seafood'



簡單工廠模式


class PizzaSimpleFatory:
   def makePizza(str):
      if str == 'bacon':
         return baconPizza()
      elif str == 'seafood':
         return seafoodPizza()


class PizzaFactoryMethod:
   def makePizza(obj):
      return obj

class PizzaFactoryMethod2:
   def makeBaconPizza():
      return baconPizza()
   def makeSeafoodPiazz():
      return seafoodPizza()


工廠方法模式

class PizzaFactoryMethod:
   def makePizza(self):
      return baconPizza()


class PizzaFactoryMethod2:
   def makeSeafoodPiazz():
      return seafoodPizza()


抽象工廠模式

定義各個地方工廠,再將地方放入抽象工廠工。

class TaiwanPizzaFactory:
   def makePizza(obj):
      obj.place = 'Taiwan'
      return obj
class JapanPizzaFactory:
   def makePizza(obj):
      obj.place = 'Japan'
      return obj
class AmericaPiazzFactory:
   def makePizza(obj):
      obj.place = 'America'
      return obj
class PizzaAbstractFactory:
   def MakeFactory(obj):
      return obj

設計模式應用概念說明

在此種模式下,主要目的是要管理物件生成的介面,當物件的類別越來越多,使得他有多種屬性時,就會有不同工廠進行生產,因次進一步管理工廠,而出現抽象工廠。

思考面向,遊戲中的裝備,有分職業、男女、等級,要怎樣寫會比較好?
思考面向,螺絲,分尺寸、牙紋類別、長度等屬性,要怎樣寫會比較好?

留言

這個網誌中的熱門文章

Python-開啟檔案

Python 開啟檔案 基本概念說明 參考 程式語言概念-常見檔案型態 基本常見檔案類型 二進位檔 文字檔 CSV XML JSON html excel word 圖片 音源 影片 以下是處理該類型檔案對應函式或模組 這邊內建函數的意思是讀取之後能直接處理。 檔案類型 內建函數 標準模組 非標準模組 二進位檔 open() None - 文字檔 open() None - CSV None csv - XML None xml - JSON None json - html None html - excel None None 非 windows excel api windows excel api word None None 非 windows word api windows word api 圖片 None None pypng 音源 None wave - 影片 None None moviepy 二進位檔程式碼範例 二位元的定義在Python官網的資料型態沒有定義,但是還是可以使用的需要用函式轉換才能夠出現,分別用bytes、bytearray兩種,在使用前可以先盡到直譯器上,用help指令查訊該function的功能,以下是其內容。 在前面先講bytes跟bytearray用法,後續再講數字、字串轉成bytes的方法,最後才是進行二進位檔案讀寫。 bytes 再把資料料轉換時輸入內容可分成一下種類 整數 字串 可迭代資料:迭代內容一定要是數字 buffer:這邊不是示範,因為寫python沒用過 bytes(1) bytes(2) bytes(3) bytes(4) bytes('str'.encode('utf8')) bytes('str'.encode('ascii')) bytes([0,1,255]) bytes((2)) bytes((1,2)) bytes({1,2}) 程式碼說明 bytes()中代入數字是告知bytes數量,如:bytes(1)就是一個bytes量 bytes()中代入字串時,附加編...

Python-設計模式-共享模式

Python 設計模式 共享模式 class Font:     def __init__(self):        self.Size = 0        self.Type = ''     def printAll(self):        print(self.Size, self.Type)  class FontFacotry:     def Word(self, Size=3, Type='1'):        F = Font()        F.Size = Size        F.Type = Type        return F  FontSize = [1,2,3] FontType = ['1','2','3'] Facotry = FontFacotry()  F1 = Facotry.Word(FontSize[0],FontType[0])  F1.printAll()  F2 = Facotry.Word( FontSize[1],FontType[1] ) F2.printAll()  F3 = Facotry.Word( FontSize[2],FontType[2] ) F3.printAll() 程式碼說明 font 定義類別 fontFacotry物件生成工廠 fontsize用來儲存font大小的外部空間 fonttype用來儲存font種類的外部空間

語言學習-English-The Scientist

Song Lyric Title :  The Scientist Singer :Coldplay Album :A Rush of blood to the head Release Date :  2002 Come up to meet you Tell you I'm sorry You don't know how lovely you are I had to find you Tell you I need you Tell you I set you apart Tell me your secrets And ask me your questions Oh let's go back to the start Running in circles, coming up tails Heads on a science apart Nobody said it was easy It's such a shame for us to part Nobody said it was easy No one ever said it would be this hard Oh take me back to the start I was just guessing at numbers and figures Pulling your puzzles apart Questions of science, science and progress Do not speak as loud as my heart Tell me you love me Come back and haunt me Oh and I rush to the start Running in circles, chasing our tails Coming back as we are Nobody said it was easy Oh it's such a shame for us to part Nobody said it was easy No one...