解釋定義
- Mixin 是一種設計模式和設計思想,而不是某個特定類和函式,mixin包含了其他類要使用的方法,其他類可以很方便新增這些方法,相當於把一些類的通用功能提取出來,提供一個靈活的多繼承,避免了繼承中的==鑽石問題==(菱形繼承)。
mixin相當於一個不可例項的類,在裡面定製一些方法,不用關聯初始化,其他類就可以很簡單獲取使用這些方法,其他類如何獲取mixin類中的方法,不同語言有不同的方法,因此有時這個關係被描述為include,而不是inheritance
- 優點:
1.在不修改類的程式碼基礎上,對類進行功能增刪
2.增加程式碼複用,減少類的產生
3.可以根據開發需要,動態調整功能
例子
# 原始程式碼
class Role:
def run(self):
print('跑......')
class SkillMixin:
def fire(self):
print('開火')
class WalkMixin:
def walk(self):
print('走.....')
# 不修改基礎上增加功能
class Solder(Role,SkillMixin,WalkMixin):
def use_list(self):
return [self.fire,self.walk]
def use(self):
print('-------增加功能')
for action in self.use_list():
action()
print('-------增加功能')
def work(self):
self.run()
self.use()
if __name__ == '__main__':
solder = Solder()
solder.work()
輸出
跑......
-------增加功能
開火
走.....
-------增加功能
本作品採用《CC 協議》,轉載必須註明作者和本文連結