還用不用OO了

看了一篇文章器罐,就是參考中的那篇,大致總結(jié)一下用OO的問題渐行。

繼承的問題

  1. 父類太多轰坊,需要依賴的類就比較多了,特別是依賴的jar包比較多祟印。
    不過我覺得現(xiàn)在的IDE以及Maven這些已經(jīng)處理的挺好了肴沫,會自動給提示讓你去選擇依賴的Jar包。當(dāng)然Maven這些還是有些麻煩蕴忆,但畢竟比起純手工打造要強(qiáng)多了颤芬。
    尤其要小心的就是不同Jar包有相同名字類的情況,一不留神引用錯了套鹅,造成后面行為的錯誤站蝠,可就比較麻煩了。
  2. 多繼承
    其實這個沒什么好說的卓鹿,既然大多數(shù)OO語言都不支持菱魔,而且都提供了用接口來便桶。我覺得也不是問題吟孙。
    特別是經(jīng)常用Interface和Abstract類澜倦,還是蠻清晰的。
  3. 父類行為的改變造成子類的Bug杰妓。
    這個是個問題藻治,一般都比較默認(rèn)父類行為是一致的。要是某次引用的Jar包升級造成行為變化巷挥,程序出錯造成live issue桩卵,那真是心里一萬個草泥馬飄過。。吸占。
    參考文中給了個例子晴叨,拷貝過來:
    父類
import java.util.ArrayList;
 
public class Array
{
  private ArrayList<Object> a = new ArrayList<Object>();
  public void add(Object element)
  {
    a.add(element);
  }
  public void addAll(Object elements[])
  {
    for (int i = 0; i < elements.length; ++i)
      a.add(elements[i]); // this line is going to be changed
  }
}

子類

public class ArrayCount extends Array
{
  private int count = 0;
 
  @Override
  public void add(Object element)
  {
    super.add(element);
    ++count;
  }
 
  @Override
  public void addAll(Object elements[])
  {
    super.addAll(elements);
    count += elements.length;
  }
}

修改的父類

  public void addAll(Object elements[])
  {
    for (int i = 0; i < elements.length; ++i)
      add(elements[i]); // this line was changed
  }

計算了兩次凿宾。矾屯。。What The Hell!!!

用什么層次結(jié)構(gòu)呢初厚?

參考文提出用Containment Hierarchies件蚕,比如襪子裝在抽屜里,抽屜裝在臥室了产禾。排作。。
有一定道理亚情,可真實世界確實有繼承這種層次結(jié)構(gòu)啊妄痪。
只是不唯一而已。

封裝的問題

文中說的封裝的問題楞件,主要說的就是引用的問題衫生。
比如一般OO語言都是引用傳遞的,當(dāng)一個對象的引用傳到另一個類的構(gòu)造函數(shù)中土浸,這個對象就不安全了W镎搿?因為別的代碼有了這個對象的引用黄伊。
而他提出的解決辦法是用值傳遞對象泪酱。我覺得他這個方法弊大于利。而且很多問題其實是語言實現(xiàn)的問題还最。

封裝還是不錯的墓阀,噴點不多。

多態(tài)的問題

看到這里的時候拓轻,我先想了半天多態(tài)的缺點岂津。發(fā)現(xiàn)也沒有太多,主要是要小心別弄錯了之類悦即。
果然吮成,作者最后說不要用OO的多態(tài),要用基于接口的多態(tài)辜梳。

作者是Function Programming粉絲粱甫。

Reference

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市作瞄,隨后出現(xiàn)的幾起案子茶宵,更是在濱河造成了極大的恐慌,老刑警劉巖宗挥,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乌庶,死亡現(xiàn)場離奇詭異种蝶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瞒大,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門螃征,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人透敌,你說我怎么就攤上這事盯滚。” “怎么了酗电?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵魄藕,是天一觀的道長。 經(jīng)常有香客問我撵术,道長背率,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任嫩与,我火速辦了婚禮寝姿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蕴纳。我一直安慰自己会油,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布古毛。 她就那樣靜靜地躺著翻翩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪稻薇。 梳的紋絲不亂的頭發(fā)上嫂冻,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機(jī)與錄音塞椎,去河邊找鬼桨仿。 笑死,一個胖子當(dāng)著我的面吹牛案狠,可吹牛的內(nèi)容都是我干的服傍。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼骂铁,長吁一口氣:“原來是場噩夢啊……” “哼吹零!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拉庵,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤灿椅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茫蛹,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡操刀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了婴洼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骨坑。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖窃蹋,靈堂內(nèi)的尸體忽然破棺而出卡啰,到底是詐尸還是另有隱情静稻,我是刑警寧澤警没,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站振湾,受9級特大地震影響杀迹,放射性物質(zhì)發(fā)生泄漏押搪。R本人自食惡果不足惜树酪,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一大州、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧厦画,春花似錦疮茄、人聲如沸根暑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畸裳。三九已至淳地,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間颇象,已是汗流浹背伍伤。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工夯到, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留嚷缭,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像阅爽,于是被迫代替她去往敵國和親路幸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

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