私は、互いに大きなコードを共有する複数のクラス(コントローラ)を持っています。このコードをどのように除外できますか?このコードは、プロトコルに属するいくつかのメソッドです。言い換えれば、私のコントローラはすべてこのプロトコルに関して同じように動作しています。彼らはすでにいくつかの異なるコントローラのサブクラスなので、私はそれらを同じ親のサブクラスにすることはできません。Obj-Cのさまざまなクラスでコードを再利用する最良の方法は何ですか?
1
A
答えて
3
集約の使用:プロトコルに準拠した単一の再利用可能なクラスを作成し、それに委譲します。
0
あなたは、一種の多重継承を持っていることが
1
は、あなたの一般的なコントローラクラスのすべてが継承する抽象スーパークラスを作るそれらについては...プロトコルを実装し、いくつかのスーパークラスから「継承」http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtForwarding.html会談することができます。その抽象スーパーは必要なプロトコルを実装でき、比較的一般的な、または非常に特殊なサブまたはサブサブクラスがオーバーライドできます。
iPhone SDKのさまざまなビュー/レスポンダーを考えてみましょう。
UIResponderクラスはイベント処理を提供します。
描画機能を追加するためのUIViewサブクラス。
UIControlのサブクラスUIViewは、さまざまなコントロールのような動作を追加します。
UIButton、UITextField、UISliderなどがあります。そのすべてがUIControlのサブクラスで、それぞれの機能を追加しています。
注意深く見れば、NSCoding(およびNSObject)プロトコルは階層内のさまざまなクラスによってサポートされていると宣言され、必要に応じてより特定のサブクラスがオーバーライドされます。
1
カテゴリを共通のスーパークラス(必要に応じてNSObject)に追加します。
関連する問題
- 1. WEBサービスを利用するさまざまな方法は何ですか
- 2. C#でさまざまなデータソースにDataTableを再利用する方法は?
- 3. 最も再利用されるクラスは何ですか?
- 4. PostgreSQLでさまざまな種類のフィードを整理する最良の方法は何ですか?
- 5. さまざまなプログラミング言語のクライアントをサーバーでテストする最良の方法は何ですか?
- 6. このコードを実行するさまざまな方法は何ですか?
- 7. 角度2でモーダルを再利用する最良の方法
- 8. 複雑なHTMLフラグメントを再利用する最良の方法
- 9. db-mysqlとdb2の両方でコードを再利用できる最適な方法は何ですか
- 10. Javaで利用できるさまざまなRESTful APIは何ですか
- 11. 利用可能なさまざまなHttpClientの違いは何ですか?
- 12. System.DirectoryServices.DirectorySearcher.PropertiesToLoadで利用可能なさまざまなプロパティは何ですか
- 13. Informatica ETLおよびASP.NET CRUDページでビジネスロジックを再利用する最良の方法は何ですか?
- 14. Windowsでディレクトリを使用するさまざまな方法は何ですか?
- 15. さまざまな種類のJavaクラスは何ですか?
- 16. クラスオブジェクトを作成してC#で再利用する最も良い方法は何ですか?
- 17. クラス、メソッドを使用する最良の方法は何ですか?
- 18. portefolioのさまざまなプロジェクトを表示する最良の方法
- 19. SwiftのUIButtonから属性を再利用する最良の方法は
- 20. ロダッシュでさまざまな簡略法を使用する利点は何ですか
- 21. ASP.NETでは、.aspxのコードをインライン化するさまざまな方法は何ですか?
- 22. ASP.NETのさまざまなユーザーに異なるフォームフィールドを表示する最適な方法は何ですか?
- 23. デスクトップアプリケーションでデータセットを再利用するための最良の方法
- 24. fopen()を使用する最良の方法は何ですか
- 25. IndexedDBを使用する最良の方法は何ですか?
- 26. djangoでさまざまな種類のユーザーに異なるプロファイルを使用する最も良い方法は何ですか?
- 27. Android - さまざまなアクティビティでビューを作成して再利用する
- 28. javaでインターネットボイスチャットアプリケーションを実装するさまざまな方法は何ですか?
- 29. Androidのさまざまなレイアウトに異なるプログラミングロジックを分ける最善の方法は何ですか?
- 30. Rubyでハッシュを再マップする最良の方法は何ですか?
+1 - これは、委任と同じものです。 –
委任は、コントロールの決定を1つの場所またはクラス階層外の何かに集中させたい場合に使用します。疑問が読み取れるように、これは簡単な継承で解決されるように思えます。 – bbum