2015-11-12 80 views
0

Dojo中mixin和inheretance之間有什麼區別嗎?我努力從文檔中找到任何差異。Dojo mixin vs繼承

如:

imports... 
{ 
    return declare('controllers.controllerA', [BaseController, _ButtonsMixin], { 
     templateString: template, 
     trackPageOnLoad: false, 
     ... 

正如你可以看到上面的例子,BaseController是繼承和_ButtonsMixin是一個mixin。

回答

0

不,沒有真正的區別。術語「mixin」在多繼承系統中實際上很常見,僅僅表示它只包含部分功能。

現實生活中的例子是這樣的:

  • 單繼承Dog extends MammalMammal包含哺乳動物的所有基本功能,如4條腿,肺,呼吸的空氣,養殖類型,...。
  • 多繼承Dog extends DogLegMixin, DogLungMixin, DogBreadingTypeMixin

然而,多繼承也可以是一個組合,例如:AwesomeDog extends Dog, LaserEyesMixin,在這種情況下Dog是有點像「基本功能」,而LaserEyesMixin是更大的「加成」。

不同的是,在面向對象的,DogMammalAwesomeDog是真實對象,並且Dog例如是Mammal一個特例。另一方面,mixin只定義了功能,它們不是真正的「實體」。