天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

繼承與混合,略談系統(tǒng)的構(gòu)建方式

  這兩天在讀kissy的源代碼,從一開始我就對(duì)它的mix()函數(shù)充滿了敵意。因?yàn)闊o(wú)論從哪個(gè)角度來(lái)看,那都是一個(gè)極其低效的實(shí)現(xiàn)。不過(guò)深入了解這個(gè)框架之后,我對(duì)kissy中的新的系統(tǒng)構(gòu)建的模型產(chǎn)生了興趣,而這種系統(tǒng)構(gòu)建的方式,也正是由mix()所帶來(lái)的。

  一、對(duì)象系統(tǒng)

  我們先了解一下對(duì)象系統(tǒng)。在《JavaScript語(yǔ)言精髓與編程實(shí)踐》中談到過(guò),面向?qū)ο笙到y(tǒng)有三種對(duì)象的繼承方式,即原型、類和元類。這三種方式都可以構(gòu)建大型對(duì)象系統(tǒng)。在后續(xù)討論之前,我們?cè)诿~概念上做一些強(qiáng)調(diào),所謂“對(duì)象系統(tǒng)”,是指由“一組對(duì)象構(gòu)成的系統(tǒng)”,這些對(duì)象之間存在或不存在某種聯(lián)系,但通過(guò)一些規(guī)則組織起來(lái)。所謂“面向?qū)ο笙到y(tǒng)”,是指以上述“對(duì)象系統(tǒng)”對(duì)基礎(chǔ)延伸演化的系統(tǒng),新系統(tǒng)滿足前對(duì)象系統(tǒng)的組織規(guī)則。

  所謂對(duì)象系統(tǒng)的三個(gè)要素,即繼承、封裝與多態(tài),即是上述組織規(guī)則的要件。孟巖同學(xué)從C/C++出發(fā),從另一個(gè)側(cè)面談?wù)搶?duì)象系統(tǒng),所持的觀點(diǎn)我相當(dāng)認(rèn)可,這包括所述的“對(duì)象范式的基本觀念中不包括繼承、封裝與多態(tài)”——這一觀點(diǎn)有其確切的背景與思考方法,值得一談。

  (http://blog.csdn.NET/myan/archive/2010/10/09/5928531.ASPx)

  我們?cè)谶@里要討論的是“對(duì)象系統(tǒng)”,即,對(duì)象是如何組織起來(lái)的問(wèn)題。在這個(gè)問(wèn)題上,組織規(guī)則之一,就是“繼承”。JavaScript中基本的繼承模型是原型繼承,其特點(diǎn)是“新對(duì)象實(shí)例的特性,復(fù)制自一個(gè)原型對(duì)象實(shí)例”。Qomo以及其它的一些項(xiàng)目,通過(guò)語(yǔ)言擴(kuò)展的方式,在JavaScript上添加了類繼承的模型,其特點(diǎn)是“對(duì)象構(gòu)建自類,類是其父類的一個(gè)派生”,這里的“派生”與“特性復(fù)制”有潛在的關(guān)系,即:子類的特性也復(fù)制自父類。正是因?yàn)?ldquo;派生”其實(shí)是特性復(fù)制的一種形式,所以事實(shí)上Qomo中的類繼承,是通過(guò)原型繼承來(lái)實(shí)現(xiàn)的,因?yàn)樵屠^承本質(zhì)上也就是“特性復(fù)制”。

  無(wú)論是原型繼承、類繼承還是這里沒有進(jìn)一步討論的元類繼承,繼承的最終目的是構(gòu)建一個(gè)“對(duì)象系統(tǒng)”,而不是“系統(tǒng)”。這一個(gè)小小的措辭上的區(qū)別,有著本質(zhì)上的、深刻的意義,這也是我提及到孟巖的上一篇文章的原因。通常,由“繼承”入手理解的“對(duì)象系統(tǒng)”其實(shí)是靜態(tài)的,以至于我們面向?qū)ο笙到y(tǒng)開發(fā)的最后一步,仍然需要框架來(lái)驅(qū)動(dòng)之。例如TApp.Run(),或者類似于new App(),等等。繼承所帶來(lái)的,主要仍然是指對(duì)象系統(tǒng)的組織性,而非其運(yùn)行過(guò)程中的動(dòng)態(tài)特性。于是我們通過(guò)更多類或其它對(duì)象系統(tǒng),來(lái)將一個(gè)系統(tǒng)的動(dòng)態(tài)特性靜態(tài)化,例如將對(duì)象之間的交互關(guān)系抽取出來(lái),變成控制類。我們做這些事情的目的,僅僅是因?yàn)槲覀兗s定了對(duì)象系統(tǒng)的組織規(guī)則,要面向這個(gè)對(duì)象系統(tǒng)開發(fā),也必然滿足(或契合)這一組織規(guī)則。組織規(guī)則限定了我們構(gòu)建系統(tǒng)的方式——繼承、封裝與多態(tài),這在一定程度上說(shuō)是“對(duì)象系統(tǒng)構(gòu)建”的一個(gè)方案,并非“系統(tǒng)構(gòu)建”的方案。而孟巖在上文中討論的,也正是“系統(tǒng)構(gòu)建”的問(wèn)題。所以孟巖提出兩點(diǎn):

  1、程序是由對(duì)象組成的;
  2、對(duì)象之間互相發(fā)送消息,協(xié)作完成任務(wù)。

  其第一條,是對(duì)象系統(tǒng)的基本特性,是謂系統(tǒng)成員;第二條,是對(duì)象系統(tǒng)如何演進(jìn)為系統(tǒng)的特性,是謂系統(tǒng)通訊。一個(gè)系統(tǒng)的約束,既包括其成員(以及成員的組織規(guī)則),也包括成員間的通訊。

  二、用mix()來(lái)構(gòu)建系統(tǒng)

  舍棄“繼承”這種方式不談,系統(tǒng)構(gòu)建還有其它的什么方法嗎?

  kissy提供了另外一種可能性,即mix(),混合。在kissy系統(tǒng)的核心部分,為一個(gè)系統(tǒng)提出了三個(gè)概念:

  1、原子(meta),一個(gè)系統(tǒng)具有至少一個(gè)原子,原子是具有mix()能力的一個(gè)對(duì)象;

  2、宿主(host),一個(gè)系統(tǒng)有一個(gè)依賴的宿主,表明系統(tǒng)的外部環(huán)境,系統(tǒng)只是其宿主環(huán)境中的部分內(nèi)容,可以由特定的名稱來(lái)區(qū)別于其它;

  3、種子(seed),一個(gè)系統(tǒng)誕生自一個(gè)種子,種子描述系統(tǒng)上述的meta和host兩個(gè)方面的特性。

  kissy約定,一個(gè)系統(tǒng)誕生自一個(gè)種子,該種子通過(guò)不停地mix()而成長(zhǎng),變成一個(gè)復(fù)雜的系統(tǒng)。由種子培育成為系統(tǒng)的整個(gè)環(huán)境,只需要能夠理解mix與host,即可以基于seed來(lái)構(gòu)建任意復(fù)雜的系統(tǒng)。

  上述的邏輯在kissy.js中,描述得相當(dāng)簡(jiǎn)單:

(function(host, S) {  

var meta = {
mix:
function(r, s, ov, wl) {
...
}
},

// If KISSY is already defined, the existing KISSY object will not
// be overwritten so that defined namespaces are preserved.
seed = (host && host[S]) || {},

// The host of runtime environment. specify by user's seed or <this>,
// compatibled for '<this> is null' in unknown engine.
host = seed.__HOST || (seed.__HOST = host || {});

// shortcut and meta for seed.
S = host[S] = meta.mix(seed, meta, false);

return S;

})(
this, 'KISSY');

it知識(shí)庫(kù)繼承與混合,略談系統(tǒng)的構(gòu)建方式,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 7723日本高清完整版在线观看 | 亚洲欧美一区二区成人片 | 国产深夜福利视频在线 | 亚洲综合AV色婷婷五月蜜臀 | 四虎永久免费 | 成人国产精品免费网站 | 在线观看国产区 | 丰满饥渴老太性hd | 免费女性裸身照无遮挡网站 | 亚洲国产成人精品不卡青青草原 | 美女诱惑性感揉胸 | 欧美国产日韩久久久 | 袖珍人与大黑人性视频 | 日本少妇无码精品12P | 性xxx免费| 99国产精品久久久久久久日本竹 | 97免费视频在线观看 | 视频成人永久免费看 | 调教椅上的调教SM总裁被调教 | 亚洲国产精品嫩草影院 | 好嗨哟在线看片免费 | 亚洲中文有码字幕日本 | 欧美另类z0z000高清 | 亚洲一区免费看 | 57PAO强力打造高清免费 | 国产欧美一区二区精品久久久 | 伊伊人成亚洲综合人网 | 亚洲国产成人在线视频 | 动漫美女禁区图 | 樱桃BT在线观看 | wwwxx日本 | 美女禁处受辱漫画 | 又粗又大又爽又黄的免费视频 | 六月婷婷国产精品综合 | 国产白丝精品爽爽久久蜜臀 | 日本黄色官网 | 久久精品影院永久网址 | 2019久久这里只精品热在线观看 | 国产高清在线a视频大全 | 一个人在线观看免费高清视频 | 无码成A毛片免费 |