2016-09-19 11 views
-3

のDisavantageを理解する:「は、著者はこれで何を意味したOOP

のオブジェクト指向言語の問題は、彼らが彼らと一緒に持ち歩くことをすべてこの 暗黙の環境を持っています。あなたは バナナを望んでいたが、何を得たことは、バナナと 全体のジャングルを保持ゴリラだった。」

をそれはかなり手厳しいOOPの批判が、なぜように聞こえますか?あなたもBananaを使用するGorillaJungleクラスを必要とするので、

class Banana { 
    Gorilla WhoHoldsYou() { return gorilla; } 
    Gorilla gorilla; 
} 

class Gorilla { 
    Jungle WhereDoYouLive { return jungle; } 
    Jungle jungle; 
} 

これは、コードの再利用のための素晴らしいではありません:OOPで

+4

文脈から理解できない場合は、作者はかなり貧弱な仕事をしています。文脈が提供されていない場合は、それを役に立たないレトリックとして扱います。 – Phylogenesis

+0

しかし暗黙の環境を持つコードの意味は何ですか? – MissDizy

+0

これは、オブジェクト指向の優れた設計がクラス結合を避ける理由です。ゴリラの定義の代わりに、バナナを使用できるように、BananaHolderとの最小限のインタフェースが必要です。それはさておき、この質問は[asking](http://stackoverflow.com/help/how-to-ask)のStackOverflowルールに従いません。 –

答えて

1

、それはすべての依存何かを作るのは簡単かつ魅力的です。 BananaクラスがGorillaクラスを知る必要がないように、>ジャングル - >ゴリラとゴリラ - (コード再利用の観点から)

より良いアプローチは、バナナの別々のマップを持っていることであったであろう。