** 三條一模一樣的魚是幾個(gè)對(duì)象
任何一個(gè)對(duì)象都是唯一的,這與它本身的狀態(tài)無關(guān)。
所以,即使?fàn)顟B(tài)一樣的對(duì)象,也并不相等。
我們用狀態(tài)來描述對(duì)象。
我們狀態(tài)的改變即是行為。
** 描述對(duì)象的方法
類是一種常見的描述對(duì)象的方式。寫代碼的時(shí)候分類主要是由于業(yè)務(wù)需要,具有一些相似特性的對(duì)象我們可以劃分為某一類,而不是像劃分生物的“界門綱目科屬種”那么嚴(yán)謹(jǐn)?shù)姆址ā?/p>
“歸類”和“分類”是兩個(gè)主要的流派。
歸類:研究單個(gè)的對(duì)象,從中提取共性,變成類。類與類之間在提取共性,變成抽象類。比如說將魚和羊抽象成動(dòng)物類。
對(duì)于歸類的事情,多繼承是一個(gè)很自然的事情,比如c++
分類:首先將世間萬物抽象是一個(gè)基類object,然后在根據(jù)某個(gè)條件分成動(dòng)物類、植物類等。
對(duì)采用分類思想的計(jì)算機(jī)語言,則是單繼承結(jié)構(gòu),會(huì)有一個(gè)基類object。比如c#,java
**javascript 描述對(duì)象的方式
原型(Prototype)
原型是一種更接近人類原始認(rèn)知的描述對(duì)象的方式。不用嚴(yán)謹(jǐn)?shù)姆诸?,而是用“相似”去描述。任何?duì)象對(duì)象僅僅需要描述它與自己原型的區(qū)別即可。
**練習(xí)
狗 咬 人 :“咬” 這個(gè)行為如何使用對(duì)象抽象?
錯(cuò)誤實(shí)例:
class Dog {
bite(human) {
// ...}
}
正確示例:
class human {
hurt(damage) {
// ...}
}
Note:
錯(cuò)誤示例中,bite的行為動(dòng)作改變的“human”這個(gè)對(duì)象,而不是dog本身,違背了“行為改變狀態(tài)”的準(zhǔn)則。所以在設(shè)計(jì)的時(shí)候,不要受語言描述的干擾。