【騰訊游戲面試題】面向?qū)ο蟮脑O(shè)計原則是什么紫谷?

本文首發(fā)公眾號洪流學(xué)堂。洪流學(xué)堂捐寥,讓你快人幾步笤昨。

今天分享一個騰訊游戲的面試題:

題目

請說出面向?qū)ο蟮脑O(shè)計原則,并分別簡述它們的含義握恳。

參考答案

單一職責(zé)原則
一個類只負(fù)責(zé)一個功能領(lǐng)域中的相應(yīng)職責(zé)瞒窒。或者說乡洼,一個類崇裁,應(yīng)該只有一個引起它變化的原因匕坯。

開閉原則
一個軟件實體應(yīng)當(dāng)對擴(kuò)展開放,對修改關(guān)閉拔稳。即軟件實體應(yīng)盡量在不修改原有代碼的情況下進(jìn)行擴(kuò)展葛峻。

在定義中,軟件實體可以指一個軟件模塊巴比、一個由多個類組成的局部結(jié)構(gòu)或一個獨立的類术奖。

為了滿足開閉原則,需要對系統(tǒng)進(jìn)行抽象化設(shè)計轻绞,抽象化是開閉原則的關(guān)鍵采记。

里氏替換原則
所有引用基類(父類)的地方必須能透明的使用其子類的對象。

里氏代換原則表明铲球,在軟件中將一個基類對象替換成它的子類對象挺庞,程序?qū)⒉粫a(chǎn)生任何錯誤和異常,反過來則不成立稼病。

里氏代換原則是實現(xiàn)開閉原則的重要方式之一选侨,在運用里氏代換原則時,應(yīng)該將父類設(shè)計為抽象類或者接口然走,讓子類繼承父類或?qū)崿F(xiàn)父接口援制,并實現(xiàn)在父類中聲明的方法,運行時芍瑞,子類實例替換父類實例晨仑,可以很方便的擴(kuò)展系統(tǒng)的功能,無須修改原有子類的代碼拆檬,增加新的功能可以通過增加一個新的子類來實現(xiàn)洪己。

接口隔離原則
使用多個專門的接口,而不使用單一的總接口竟贯,即客戶端不應(yīng)該依賴那些他不需要的接口答捕。

這里的接口有兩種不同的含義:一種是指一個類型所具有的方法特征的集合,僅僅是一種邏輯上的抽象屑那;另一種是指某種語言具體的接口定義拱镐,有嚴(yán)格的定義和結(jié)構(gòu),比如Java語言中的interface持际。

依賴倒置原則
如果說開閉原則是面向?qū)ο笤O(shè)計的目標(biāo)的話沃琅,那么依賴倒轉(zhuǎn)原則就是面向?qū)ο笤O(shè)計的主要實現(xiàn)機(jī)制之一,它是系統(tǒng)抽象化的具體實現(xiàn)蜘欲。

抽象不應(yīng)該依賴于細(xì)節(jié)益眉,細(xì)節(jié)應(yīng)當(dāng)依賴于抽象。換句話說姥份,要針對接口編程呜叫,而不是針對實現(xiàn)編程空繁。

依賴倒轉(zhuǎn)原則要求在程序代碼中傳遞傳遞參數(shù)時或者關(guān)聯(lián)關(guān)系中,盡量引用層次高的抽象層類朱庆,即使用接口和抽象類進(jìn)行變量類型聲明、參數(shù)類型聲明闷祥、方法返回類型聲明娱颊,以及數(shù)據(jù)類型的轉(zhuǎn)換等,而不要使用具體類來做這些事情凯砍。

在實現(xiàn)依賴倒轉(zhuǎn)原則時箱硕,需要針對抽象層編程,而將具體類的對象通過依賴注入的方式注入到其他對象中悟衩。依賴注入是指當(dāng)一個對象要與其他對象發(fā)生依賴關(guān)系時剧罩,通過抽象來注入所依賴的對象。

常用的注入方式有三種:

  • 構(gòu)造注入:通過構(gòu)造函數(shù)來傳入具體類的對象座泳。
  • 設(shè)置注入:通過setter方法來傳入具體類的對象惠昔。
  • 接口注入:通過實現(xiàn)在接口中聲明的業(yè)務(wù)方法來傳入具體類的對象。

合成復(fù)用原則
盡量使用對象組合挑势,而不是繼承來達(dá)到復(fù)用的目的镇防。

迪米特法則
一個軟件實體應(yīng)當(dāng)盡可能少地與其他實體發(fā)生相互作用。

現(xiàn)在試試這個面試題

【微軟游戲面試題】

8個球7個一樣重的潮饱,有一個偏重来氧,一個天平,如何兩次找出偏重的小球香拉?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末啦扬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子凫碌,更是在濱河造成了極大的恐慌扑毡,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件证鸥,死亡現(xiàn)場離奇詭異僚楞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)枉层,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門泉褐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鸟蜡,你說我怎么就攤上這事膜赃。” “怎么了揉忘?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵跳座,是天一觀的道長端铛。 經(jīng)常有香客問我,道長疲眷,這世上最難降的妖魔是什么禾蚕? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮狂丝,結(jié)果婚禮上换淆,老公的妹妹穿的比我還像新娘。我一直安慰自己几颜,他們只是感情好倍试,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蛋哭,像睡著了一般县习。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谆趾,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天躁愿,我揣著相機(jī)與錄音,去河邊找鬼棺妓。 笑死攘已,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的怜跑。 我是一名探鬼主播样勃,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼性芬!你這毒婦竟也來了峡眶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤植锉,失蹤者是張志新(化名)和其女友劉穎辫樱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俊庇,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡狮暑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了辉饱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搬男。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖彭沼,靈堂內(nèi)的尸體忽然破棺而出缔逛,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布褐奴,位于F島的核電站按脚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏敦冬。R本人自食惡果不足惜辅搬,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脖旱。 院中可真熱鬧伞辛,春花似錦、人聲如沸夯缺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽踊兜。三九已至,卻和暖如春佳恬,著一層夾襖步出監(jiān)牢的瞬間捏境,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工毁葱, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留垫言,地道東北人。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓倾剿,卻偏偏與公主長得像筷频,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子前痘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

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