2009-05-09 7 views
16

多くのブログ、フォーラムのエントリ、いくつかのAppleのドキュメントを読んだ後、Objective-Cの広範なサブクラス化が賢明かどうかはまだ分かりません。Objective-Cのサブクラス化は悪い習慣ですか?

例えば以下のケースください:

は、私は は、要素をたくさん持っているパズルゲームを開発していたとします。それらのすべての 要素は同じ振る舞いの一定量を共有します。次に、要素の私の コレクション内で、要素の異なる グループが等しい 行動、 グループから区別するグループなどを共有する...

ので、、何から を継承するかを決定した後、私は をサブクラス化することを決定しました忘却のなぜ私はしてはいけないのですか? 一般的な調整の容易さを考慮して、 の動作はこのモデルでは、私は と思っています。

しかし、 - そしてこれは私の質問の源である - Appleはサブクラス化の賛成で使用して、デリゲート、データソースメソッド、および非公式のプロトコルに言及しています。それは本当になぜ私の心をボグリングするのですか?

2つのキャンプがあるようです。サブクラス化に賛成する人、そうでない人の顔を隠す人。それは明らかに個人的な味に依存します。 私は大規模にサブクラス化して大規模にサブクラス化しないという賛否両論は何ですか?

私の質問は簡単です:私はそうですか?そして、なぜ、なぜ、どうしてですか?

+10

Kriem、AppleはCocoaを一般的に使用していますが、Objective-Cとは関係ありません。個々のプロジェクトごとに、アプリケーションとコードベースを最適に設定する方法を決定する必要があります。 Appleのケースでは、MVCとIoCのパラダイムを使用してCocoa(特にAppKit/UIKit)を設定していますので、代わりに代理人を使用できるときにNSControlなどのサブクラスを自分で作成しないことをお勧めします。まとめると、この警告はCocoaフレームワークのためのものであり、一般的なObjecive-Cのものではありません。 –

+0

@Jason:これは簡単なコメントとして残すのは、かなり良い答えですか? – mouviciel

+0

@mouviciel - 私は思っていませんでした。今では基本的に同じことを言っている多くの答えがあるので、それはそれ以上のノイズを加える価値はないようです:) –

答えて

関連する問題