Python實現設計模式 建立類設計模式

2021-09-26 06:22:46 字數 2866 閱讀 8405

抽象工廠是什麼

抽象工廠是為了提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。

例子我建立了乙個抽象工廠類,它的表現取決於我們選擇什麼工廠來初始化它。例子中,抽象工廠類是寵物店(petshop),它有乙個動作(show_pet)用來展示動物,我們如果用貓(cat)初始化寵物店,展示時,它會」喵嗚「。

**實現例子

import random

class petshop(object):

"""寵物店"""

def __init__(self, animal_factory=none):

"""pet_factory是我們的抽象工廠"""

self.pet_factory = animal_factory

def show_pet(self):

"""使用抽象工廠創造和展示寵物"""

pet = self.pet_factory()

print("我們有乙隻可愛的 {}".format(pet))

print("它看到了你,對你 {}".format(pet.speak()))

class dog(object):

def speak(self):

return '汪汪'

def __str__(self):

return '小狗'

class cat(object):

def speak(self):

return '喵嗚'

def __str__(self):

return '小貓'

# 隨機一種動物

def random_animal():

return random.choice([dog, cat])()

if __name__ == "__main__":

cat_shop = petshop(cat)

cat_shop.show_pet()

shop = petshop(random_animal)

for _ in range(3):

shop.show_pet()

print('=' * 20)

### 輸出 ###

我們有乙隻可愛的 小貓

它看到了你,對你 喵嗚

我們有乙隻可愛的 小狗

它看到了你,對你 汪汪

********************

我們有乙隻可愛的 小貓

它看到了你,對你 喵嗚

********************

我們有乙隻可愛的 小狗

它看到了你,對你 汪汪

********************

borg模式是什麼

brog模式(也稱monostata模式)可以用來實現單例,但是不是指乙個類只有乙個例項,它會多個具有相同屬性的例項。換一句話說,它關注於共享屬性為不是共享例項。

例子首先你需要知道的是,python例項的屬性儲存在乙個叫做__dict__的字典中。通常,每個例項都會有乙個這樣的字典,但是,borg 模式修改了這一規定,從而使每個例項有乙個相同的字典。

在這個例子中,__shared_state屬性會成為所有例項的公共字典,這是通過確保當初始化乙個新的例項時(__init__())方法執行時),將__dict__屬性賦值為類的靜態變數_shared_state來實現的。

**實現例子

class borg(object):

__shared_state = {}

def __init__(self):

self.__dict__ = self.__shared_state

self.state = 'init'

def __str__(self):

return self.state

class yourborg(borg):

pass

if __name__ == '__main__':

rm1 = borg()

rm2 = borg()

rm1.state = 'idle'

rm2.state = 'running'

print('rm1: '.format(rm1))

print('rm2: '.format(rm2))

rm2.state = 'zombie'

print('rm1: '.format(rm1))

print('rm2: '.format(rm2))

print('rm1 id: '.format(id(rm1)))

print('rm2 id: '.format(id(rm2)))

rm3 = yourborg()

print('rm1: '.format(rm1))

print('rm2: '.format(rm2))

print('rm3: '.format(rm3))

### 輸出 ###

rm1: running

rm2: running

rm1: zombie

rm2: zombie

rm1 id: 2306371518816

rm2 id: 2306371552704

rm1: init

rm2: init

rm3: init

建造者模式是什麼

例子**實現例子工廠模式是什麼

例子**實現例子lazy_evalution模式是什麼

例子**實現例子池模式是什麼

例子**實現例子原型模式是什麼

例子**實現例子

設計模式之建立類模式PK

建立類模式包括 工廠方法模式 建造者模式 抽象工廠模式 單例模式 原型模式 建立類模式能夠提供物件的建立和管理職責.其中單例模式和原型模式非常容易理解,單例模式是要保持在記憶體中只有乙個物件,原型模式是要求通過複製的方式產生乙個新的物件,這兩個不容易混淆.工廠方法模式注重的是整體物件的建立方法,而建...

設計模式之建立類模式PK

建立類模式包括 工廠方法模式 建造者模式 抽象工廠模式 單例模式 原型模式 建立類模式能夠提供物件的建立和管理職責.其中單例模式和原型模式非常容易理解,單例模式是要保持在記憶體中只有乙個物件,原型模式是要求通過複製的方式產生乙個新的物件,這兩個不容易混淆.工廠方法模式注重的是整體物件的建立方法,而建...

設計模式複習 2 建立類模式

定義 單例模式 餓漢形式 author emma zhang date 2019 2 15 public class singletonforhunger 訪問例項 public static singletonforhunger getsingletonforhunger public stati...