Python-什么是Mixin

Mixin

1. 什么是Mixin

Mixin(mix-in)混入,是一种设计思想或者设计模式,本身并不是代码逻辑或者方法,只是一种理念,很多面向对象的编程语言都有Mixin的设计模式。

2. 为什么用Mixin

Mixin,出现在多重继承的场景中,一般用于功能扩展,而不作为实体父级类。

举个例子:

# -*- coding:utf-8 -*-
class A():
	def func01():
		print('A func01')

class BMixin():
	def flyable():
		print('I cam fly')
		
class C(A,BMixin):
	pass

可以看见B类在起名时给后面加了Mixin的后缀,说明BMixin是一个混入类,并不是所有类都可以从理念上定义为Mixin类,它必须遵循以下约定:

3. 什么样的类可以成为Mixin类

  1. Mixin类里只包含功能且不能被实例化。就比如鸟会飞,鸟是一个实体类,飞是一种功能,飞的这个功能如果提出来作为一个类class Bird(FlyMixin),这种类FlyMixin就算实例化了也没啥意义。
  2. Mixin类功能单一,如果有多个功能,那就写多个Mixin类,拆的很细,鸟会飞和鸟能拉屎你就可以写成两个Mixin类来使用(粗糙了)。
  3. Mixin类不依赖子类,子类也不是一定依赖Mixin类。毕竟鸟会不会飞,不是说他不不会飞我们就说他是一只狗。

4. 注意事项

Mixin好用可不要贪杯,毕竟如果你的类变成这样:
class A(BMixin,CMixin,DMixin)
如果BMixin,CMixin,DMixin中有相同方法名的方法或者super,就会让你的阅读如同鸭溪。
总之,我的理解,能简化继承结构,就不要搞多重继承的Mixin混入。

毕竟头发少掉一根是一根,你说呢?

上一篇:jq获取图片的原始尺寸,自适应布局


下一篇:JS获取图片实际宽高及根据图片大小进行自适应