[英]Is 'duck typing' in Python also a 'Facade Design Pattern'?
每當我們能夠從不同的類中調用一個 function 時,它會被視為外觀設計模式嗎?
class Mobile:
def __init__(self, name, ram, memory):
self.name = name
self.ram = ram
self.memory = memory
def info(self):
return self.name, self.ram, self.memory
class Printer:
def __init__(self, name, size, color):
self.name = name
self.size= size
self.color= color
def info(self):
return self.name, self.size, self.color
mob = Mobile("Dark", 8, 128)
prt = Printer("Alpine", '4-5', 'white')
print(mob.info())
print(prt.info())
在上面的代碼中,我們對兩個類使用相同的 function。 這會被視為外觀設計模式嗎?
外觀通過單個接口提供抽象
你這里沒有抽象任何東西,只是定義了兩個獨立的實例方法,可以用任何 OOP 語言完成,所以鴨子類型是無關緊要的
請注意,您的課程完全相同,因此您不需要兩個課程,只需class Mobile
的兩個實例
class Mobile:
def __init__(self, name, ram, memory):
self.name = name
self.ram = ram
self.memory = memory
def info(self):
return self.name, self.ram, self.memory
mob1 = Mobile("Dark", 8, 128)
mob2 = Mobile("Alpine", 16, 128)
如果您定義了一個抽象基礎 class ,那么您將使用 inheritance 和子類,但仍然不是外觀
在您的情況下,外觀的一個示例是某些運營商將呼叫/消息(通過單個界面)路由到任何“移動設備”,其中移動設備可能具有完全不同的聯系方式(其中contact()
可以定義為父類中的抽象 function)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.