本日看到 @chengxuyuan_329633 的发问 关于装潢形式激发的思索 又想起了 mixin。mixin 形式和装潢器形式很类似。
实在,mixin形式就是装潢器形式。
那末单利形式呢?呵呵,实在就是全局变量/对象。
当过程式开辟变得愈来愈庞杂,代码越难以保护,因而,涌现了软件危急,处理软件的危急的体式格局是什么呢?新的开辟形式,也就是 OO,面向对象。
然则面向对象是银弹吗?最少最最先的时刻是,许多极度的言语说本身是纯OO,一切都是对象,看似很圆满,然则许多东西基础就不须要用对象的,而且频仍发生对象也是一件麻烦事,还有些对象全部软件周期内只需一个就能够了,比方数据库连接池,或许 sun 对象(毕竟太阳只要一个),然则 OO 的头脑迫使他们不能运用全局变量,因而,智慧的 OOer 们最先想办法,绞尽脑汁的琢磨了几天几夜,终究灵光一闪,哇,能够如许如许如许……云云云云云云…… 因而 OOer 们就给他起了一个高端的名字:单利形式。
mixin 也是这类状况,他最最先涌现在动态言语,说的详细点,主张是哪些另类 OO 言语,即没有类的 OO 言语,比方 js。这就造成了 mixin 和装潢器形式的一个实质差别:基于类,照样基于对象。
mixin 直接修正对象的属性,将两个对象 mixin 在一起。而装潢器形式不是,装潢器形式所依靠的类是牢固的,而且须要许多许多许多,如许才能够在建立对象是,用差别的类(主张是类,不是对象)来装潢这个新对象。
附:头几天翻译了一篇关于javascript的mixin文章:http://justjavac.com/javascript/2012/12/11/are-your-mixins-ecmascript-5-compatible.html