編程思想-面向?qū)ο?/h1>

1.什么是面向?qū)ο?/h3>

面向?qū)ο箝_(kāi)發(fā)方法(ObjectOriented,OO)又稱:快速原型法。

客觀世界是由各種各樣的對(duì)象組成的,每種對(duì)象都有各自的內(nèi)部狀態(tài)和運(yùn)動(dòng)規(guī)律,不同對(duì)象之間的相互作用和聯(lián)系就構(gòu)成了各種不同的系統(tǒng)。
在設(shè)計(jì)和實(shí)現(xiàn)一個(gè)客觀系統(tǒng)時(shí),在滿足需求的條件下,把系統(tǒng)設(shè)計(jì)成一些不可變的(相對(duì)固定)部分組成的最小集合(最好的設(shè)計(jì))。這些不可變的部分就是所謂的對(duì)象。

2.面向?qū)ο箝_(kāi)發(fā)方法的組成


1、面向?qū)ο蟮模ㄐ枨螅┓治鯫OA

2、面向?qū)ο蟮脑O(shè)計(jì)OOD

3、面向?qū)ο蟮某绦騉OP

3.面向?qū)ο箝_(kāi)發(fā)方法的開(kāi)發(fā)過(guò)程


1、系統(tǒng)調(diào)查和需求分析:對(duì)系統(tǒng)將要面臨的具體管理問(wèn)題以及用戶對(duì)系統(tǒng)開(kāi)發(fā)的需求進(jìn)行調(diào)查研究,即先弄清要干什么的問(wèn)題。

2、分析問(wèn)題的性質(zhì)和求解問(wèn)題:在繁雜的問(wèn)題域中抽象地識(shí)別出對(duì)象以及其行為、結(jié)構(gòu)、屬性、方法等。一般稱之為面向?qū)ο蟮姆治觯碠OA。

3、整理問(wèn)題:對(duì)分析的結(jié)果作進(jìn)一步的抽象、歸類(lèi)、整理,并最終以范式的形式將它們確定下來(lái)。一般稱之為面向?qū)ο蟮脑O(shè)計(jì),即OOD。

4、程序?qū)崿F(xiàn):用面向?qū)ο蟮?a target="_blank" rel="nofollow">程序設(shè)計(jì)語(yǔ)言將上一步整理的范式直接映射(即直接用程序設(shè)計(jì)語(yǔ)言來(lái)取代)為應(yīng)用軟件。一般稱之為面向?qū)ο蟮某绦颍碠OP。

5、識(shí)別客觀世界中的對(duì)象以及行為,分別獨(dú)立設(shè)計(jì)出各個(gè)對(duì)象的實(shí)體;分析對(duì)象之間的聯(lián)系和相互所傳遞的信息,由此構(gòu)成信息系統(tǒng)的模型;由信息系統(tǒng)模型轉(zhuǎn)換成軟件系統(tǒng)的模型,對(duì)各個(gè)對(duì)象進(jìn)行歸并和整理,并確定它們之間的聯(lián)系;由軟件系統(tǒng)模型轉(zhuǎn)換成目標(biāo)系統(tǒng)。

4.面向?qū)ο蟮幕靖拍?/h3>
  • 對(duì)象

對(duì)象是要研究的任何事物。從一本書(shū)到一家圖書(shū)館,單的整數(shù)到整數(shù)列龐大的數(shù)據(jù)庫(kù)、極其復(fù)雜的自動(dòng)化工廠、航天飛機(jī)都可看作對(duì)象,它不僅能表示有形的實(shí)體,也能表示無(wú)形的(抽象的)規(guī)則、計(jì)劃或事件。對(duì)象由數(shù)據(jù)(描述事物的屬性)和作用于數(shù)據(jù)的操作(體現(xiàn)事物的行為)構(gòu)成一獨(dú)立整體。從程序設(shè)計(jì)者來(lái)看,對(duì)象是一個(gè)程序模塊,從用戶來(lái)看,對(duì)象為他們提供所希望的行為。在對(duì)內(nèi)的操作通常稱為方法。一個(gè)對(duì)象請(qǐng)求另一對(duì)象為其服務(wù)的方式是通過(guò)發(fā)送消息。

  • 類(lèi)

類(lèi)是對(duì)象的模板。即類(lèi)是對(duì)一組有相同數(shù)據(jù)和相同操作的對(duì)象的定義,一個(gè)類(lèi)所包含的方法和數(shù)據(jù)描述一組對(duì)象的共同行為和屬性。類(lèi)是在對(duì)象之上的抽象,對(duì)象則是類(lèi)的具體化,是類(lèi)的實(shí)例。類(lèi)可有其子類(lèi),也可有其它類(lèi),形成類(lèi)層次結(jié)構(gòu)。

  • 消息

消息是對(duì)象之間進(jìn)行通信的一種規(guī)格說(shuō)明。一般它由三部分組成:接收消息的對(duì)象、消息名及實(shí)際變?cè)?/p>

  • 繼承

繼承性(Inheritance)是指,在某種情況下,一個(gè)類(lèi)會(huì)有“子類(lèi)”。子類(lèi)比原本的類(lèi)(稱為父類(lèi))要更加具體化。例如,“狗”這個(gè)類(lèi)可能會(huì)有它的子類(lèi)“牧羊犬”和“吉娃娃犬”。在這種情況下,“萊絲”可能就是牧羊犬的一個(gè)實(shí)例。子類(lèi)會(huì)繼承父類(lèi)的屬性和行為,并且也可包含它們自己的。我們假設(shè)“狗”這個(gè)類(lèi)有一個(gè)方法(行為)叫做“吠叫()”和一個(gè)屬性叫做“毛皮顏色”。它的子類(lèi)(前例中的牧羊犬和吉娃娃犬)會(huì)繼承這些成員。這意味著程序員只需要將相同的代碼寫(xiě)一次。
在偽代碼中我們可以這樣寫(xiě):
類(lèi)牧羊犬:繼承狗定義萊絲是牧羊犬萊絲.吠叫() /* 注意這里調(diào)用的是狗這個(gè)類(lèi)的吠叫方法。/
回到前面的例子,“牧羊犬”這個(gè)類(lèi)可以繼承“毛皮顏色”這個(gè)屬性,并指定其為棕白色。而“吉娃娃犬”則可以繼承“吠叫()”這個(gè)方法,并指定它的音調(diào)高于平常。子類(lèi)也可以加入新的成員,例如,“吉娃娃犬”這個(gè)類(lèi)可以加入一個(gè)方法叫做“顫抖()”。設(shè)若用“牧羊犬”這個(gè)類(lèi)定義了一個(gè)實(shí)例“萊絲”,那么萊絲就不會(huì)顫抖,因?yàn)檫@個(gè)方法是屬于吉娃娃犬的,而非牧羊犬。事實(shí)上,我們可以把繼承理解為“是”或“屬于”。萊絲“是”牧羊犬,牧羊犬“屬于”狗類(lèi)。因此,萊絲既得到了牧羊犬的屬性,又繼承了狗的屬性。 我們來(lái)看偽代碼:
類(lèi)吉娃娃犬:繼承狗開(kāi)始 公有成員: 顫抖()結(jié)束類(lèi)牧羊犬:繼承狗定義萊絲是牧羊犬萊絲.顫抖() /
錯(cuò)誤:顫抖是吉娃娃犬的成員方法。 */
當(dāng)一個(gè)類(lèi)從多個(gè)父類(lèi)繼承時(shí),我們稱之為“多重繼承”。如一只狗既是吉娃娃犬又是牧羊犬(雖然事實(shí)上并不合邏輯)。多重繼承并不總是被支持的,因?yàn)樗茈y理解,又很難被好好使用。

  • 封裝性

具備封裝性(Encapsulation)的面向?qū)ο蟪绦蛟O(shè)計(jì)隱藏了某一方法的具體執(zhí)行步驟,取而代之的是通過(guò)消息傳遞機(jī)制傳送消息給它。因此,舉例來(lái)說(shuō),“狗”這個(gè)類(lèi)有“吠叫()”的方法,這一方法定義了狗具體該通過(guò)什么方法吠叫。但是,萊絲的朋友并不知道它到底是如何吠叫的。
從實(shí)例來(lái)看:
/* 一個(gè)面向過(guò)程的程序會(huì)這樣寫(xiě): /定義萊絲萊絲.設(shè)置音調(diào)(5)萊絲.吸氣()萊絲.吐氣()/ 而當(dāng)狗的吠叫被封裝到類(lèi)中,任何人都可以簡(jiǎn)單地使用: */定義萊絲是狗萊絲.吠叫()
封裝是通過(guò)限制只有特定類(lèi)的對(duì)象可以訪問(wèn)這一特定類(lèi)的成員,而它們通常利用接口實(shí)現(xiàn)消息的傳入傳出。舉個(gè)例子,接口能確保幼犬這一特征只能被賦予狗這一類(lèi)。通常來(lái)說(shuō),成員會(huì)依它們的訪問(wèn)權(quán)限被分為3種:公有成員、私有成員以及保護(hù)成員。有些語(yǔ)言更進(jìn)一步:Java可以限制同一包內(nèi)不同類(lèi)的訪問(wèn);C#和VB.NET保留了為類(lèi)的成員聚集準(zhǔn)備的關(guān)鍵字:internal(C#)和Friend(VB.NET);Eiffel語(yǔ)言則可以讓用戶指定哪個(gè)類(lèi)可以訪問(wèn)所有成員。[1]

  • 多態(tài)

多態(tài)(Polymorphism)是指由繼承而產(chǎn)生的相關(guān)的不同的類(lèi),其對(duì)象對(duì)同一消息會(huì)做出不同的響應(yīng)。例如,狗和雞都有“叫()”這一方法,但是調(diào)用狗的“叫()”,狗會(huì)吠叫;調(diào)用雞的“叫()”,雞則會(huì)啼叫。
結(jié)束定義萊絲是狗定義魯斯特是雞萊絲.叫()魯斯特.叫()
這樣,雖然同樣是做出這一種行為,但萊絲和魯斯特具體做出的表現(xiàn)方式將大不相同。多態(tài)性的概念可以用在運(yùn)算符重載上,本文不再贅述。

  • 抽象性

抽象(Abstraction)是簡(jiǎn)化復(fù)雜的現(xiàn)實(shí)問(wèn)題的途徑,它可以為具體問(wèn)題找到最恰當(dāng)?shù)念?lèi)定義,并且可以在最恰當(dāng)?shù)睦^承級(jí)別解釋問(wèn)題。舉例說(shuō)明,萊絲在大多數(shù)時(shí)候都被當(dāng)作一條狗,但是如果想要讓它做牧羊犬做的事,你完全可以調(diào)用牧羊犬的方法。如果狗這個(gè)類(lèi)還有動(dòng)物的父類(lèi),那么你完全可以視萊絲為一個(gè)動(dòng)物。

5.面向?qū)ο箝_(kāi)發(fā)的特征


  • 封裝性。面向?qū)ο蠓椒ㄖ校绦蚝蛿?shù)據(jù)是封裝在一起的,對(duì)象作為一個(gè)實(shí)體,其操作隱藏在方法中,其狀態(tài)由對(duì)象的"屬性"來(lái)描述,并且只能通過(guò)對(duì)象中的"方法"來(lái)改變,從外界無(wú)從得知。封裝性構(gòu)成了面向?qū)ο蠓椒ǖ幕A(chǔ)。因而,這種方法的創(chuàng)始人Codd和YOuMn認(rèn)為,面向?qū)ο缶褪?對(duì)象+屬性+方法"。

  • 抽象性。面向?qū)ο蠓椒ㄖ校褟木哂泄餐再|(zhì)的實(shí)體中抽象出的事物本質(zhì)特征概念,稱為"類(lèi)"(Class),對(duì)象是類(lèi)的一個(gè)實(shí)例。類(lèi)中封裝了對(duì)象共有的屬性和方法,通過(guò)實(shí)例化一個(gè)類(lèi)創(chuàng)建的對(duì)象,自動(dòng)具有類(lèi)中規(guī)定的屬性和方法。

  • 繼承性。繼承性是類(lèi)特有的性質(zhì),類(lèi)可以派生出子類(lèi),子類(lèi)自動(dòng)繼承父類(lèi)的屬性與方法。這樣,在定義子類(lèi)時(shí),只須說(shuō)明它不同于父類(lèi)的特性,從而可大大提高軟件的可重用性。

  • 多態(tài)。所謂多態(tài)就是指一個(gè)類(lèi)實(shí)例的相同方法在不同情形有不同表現(xiàn)形式。多態(tài)機(jī)制使具有不同內(nèi)部結(jié)構(gòu)的對(duì)象可以共享相同的外部接口。這意味著,雖然針對(duì)不同對(duì)象的具體操作不同,但通過(guò)一個(gè)公共的類(lèi),它們(那些操作)可以通過(guò)相同的方式予以調(diào)用。

6.面向?qū)ο蟮奈宕蠡驹瓌t


  • 單一職責(zé)原則SRP(Single Responsibility Principle)
    是指一個(gè)類(lèi)的功能要單一,不能包羅萬(wàn)象。如同一個(gè)人一樣,分配的工作不能太多,否則一天到晚雖然忙忙碌碌的,但效率卻高不起來(lái)。

  • 開(kāi)放封閉原則OCP(Open-Close Principle)
    一個(gè)模塊在擴(kuò)展性方面應(yīng)該是開(kāi)放的而在更改性方面應(yīng)該是封閉的。比如:一個(gè)網(wǎng)絡(luò)模塊,原來(lái)只服務(wù)端功能,而現(xiàn)在要加入客戶端功能,
    那么應(yīng)當(dāng)在不用修改服務(wù)端功能代碼的前提下,就能夠增加客戶端功能的實(shí)現(xiàn)代碼,這要求在設(shè)計(jì)之初,就應(yīng)當(dāng)將服務(wù)端和客戶端分開(kāi),公共部分抽象出來(lái)。

  • 替換原則(the Liskov Substitution Principle LSP)
    子類(lèi)應(yīng)當(dāng)可以替換父類(lèi)并出現(xiàn)在父類(lèi)能夠出現(xiàn)的任何地方。比如:公司搞年度晚會(huì),所有員工可以參加抽獎(jiǎng),那么不管是老員工還是新員工,
    也不管是總部員工還是外派員工,都應(yīng)當(dāng)可以參加抽獎(jiǎng),否則這公司就不和諧了。

  • 依賴原則(the Dependency Inversion Principle DIP) 具體依賴抽象,上層依賴下層。假設(shè)B是較A低的模塊,但B需要使用到A的功能,
    這個(gè)時(shí)候,B不應(yīng)當(dāng)直接使用A中的具體類(lèi): 而應(yīng)當(dāng)由B定義一抽象接口,并由A來(lái)實(shí)現(xiàn)這個(gè)抽象接口,B只使用這個(gè)抽象接口:這樣就達(dá)到
    了依賴倒置的目的,B也解除了對(duì)A的依賴,反過(guò)來(lái)是A依賴于B定義的抽象接口。通過(guò)上層模塊難以避免依賴下層模塊,假如B也直接依賴A的實(shí)現(xiàn),那么就可能造成循環(huán)依賴。一個(gè)常見(jiàn)的問(wèn)題就是編譯A模塊時(shí)需要直接包含到B模塊的cpp文件,而編譯B時(shí)同樣要直接包含到A的cpp文件。

  • 接口分離原則(the Interface Segregation Principle ISP)
    模塊間要通過(guò)抽象接口隔離開(kāi),而不是通過(guò)具體的類(lèi)強(qiáng)耦合起來(lái)

7.為什么需要面向?qū)ο蠓椒?/h3>

(1)面向?qū)ο蟮姆椒ǜ咏谌祟?lèi)的自然思維。人類(lèi)在認(rèn)識(shí)和理解現(xiàn)實(shí)世界中普遍運(yùn)用的三個(gè)構(gòu)造法則是區(qū)分對(duì)象及其屬性、區(qū)分整體對(duì)象及其組成部分、區(qū)分及形成不同對(duì)象類(lèi)。而面向?qū)ο笳腔趯?duì)象及屬性、類(lèi)屬及成員、整體及其部分這些概念基礎(chǔ)之上的。因而它必然更容易被理解和運(yùn)用。

(2)系統(tǒng)分析、系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)之間采用同樣的角度看待問(wèn)題甚至同樣的表示方法來(lái)描述間題,它們之間的連接是自然的無(wú)縫連接。

(3)面向?qū)ο蟮姆椒▽?duì)象的屬性及服務(wù)視為一個(gè)整體。

這更符合客觀世界的規(guī)律,從而使其理解與實(shí)現(xiàn)起來(lái)更加容易,進(jìn)一步減少維護(hù)的費(fèi)用。

(4)繼承的方法一方面符合客觀世界的規(guī)律,一方面加強(qiáng)代碼重用的可能性,以便提高軟件的開(kāi)發(fā)效率。

(5)信息隱蔽原理使系統(tǒng)在變化的環(huán)境中有良好的適應(yīng)性,從而使整個(gè)系統(tǒng)更加穩(wěn)定和易于維護(hù)。

總之,面向?qū)ο蟮姆椒ㄒ环矫娓子谌藗兝斫獠⒂成洮F(xiàn)實(shí)世界,另一方面可以提高軟件開(kāi)發(fā)效率、可靠性及可維護(hù)性。

8.面向過(guò)程和面向?qū)ο蟮膮^(qū)別


在知乎上看到一個(gè)答案,很精辟

一個(gè)程序要完成一個(gè)任務(wù)就相當(dāng)于講一個(gè)故事。
面向過(guò)程就是編年史
面向?qū)ο缶褪羌o(jì)傳史
對(duì)于復(fù)雜的程序/宏大的故事,事實(shí)都證明了 面向?qū)ο?紀(jì)傳是更合理的表述方法。

編年史:按照時(shí)間線索
紀(jì)傳史:按照人物線索

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,673評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 178,610評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,939評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,668評(píng)論 6 412
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 56,004評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評(píng)論 3 449
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 43,173評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,705評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,426評(píng)論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,656評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評(píng)論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,833評(píng)論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,247評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,580評(píng)論 1 295
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,371評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,621評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容

  • 面向?qū)ο蟪绦蛟O(shè)計(jì)(英語(yǔ):Object-oriented programming,縮寫(xiě):OOP)是種具有對(duì)象概念的程...
    李序鍇閱讀 1,301評(píng)論 0 5
  • 1.面向?qū)ο缶幊? 1.0 為何要有面向?qū)ο缶幊? 很早之前程序員就發(fā)現(xiàn),隨著軟件的日趨復(fù)雜與龐大,維護(hù)往往變成了...
    mind1949閱讀 450評(píng)論 0 0
  • 1. OOP 指什么?有哪些特性 OOP指的就是面向?qū)ο蟪绦蛟O(shè)計(jì)(英語(yǔ):Object-oriented progr...
    饑人谷_有點(diǎn)熱閱讀 271評(píng)論 0 0
  • 在老家,有“冬至大過(guò)年”的說(shuō)法。一大早就會(huì)看見(jiàn)阿姆們?yōu)槎恋聂亵蚊锩ν狻<依镆话愣际悄棠套鲷亵危渌隧敹?..
    艾力兒閱讀 238評(píng)論 4 6
  • 今天早晨6點(diǎn)鐘準(zhǔn)時(shí)起床,看了1個(gè)小時(shí)的書(shū),7點(diǎn)半鐘就開(kāi)始工作了,8點(diǎn)鐘的時(shí)候?yàn)楣ぷ靼嵋慌_(tái)機(jī)器,搬的過(guò)程中手滑了,機(jī)...
    周秀峰閱讀 147評(píng)論 0 1