「Touchable」が、サポートするために各クラスが明示的に実装する必要のある動作のランダムなセットを表すかどうか、または継承で「正しく機能する」単一の実装が存在する可能性があるかどうかによって異なります(おそらく少しカスタマイズして)。
前者の場合、あなたの考えはほとんど正しいです。後者の場合、@protocol
(Javaのインターフェイスによく似た)を使用するというJackの提案は理にかなっています。
個人的には、とてもシンプルにしています。SPAbstractSprite
のサブクラスであるクラスから始めCCSprite
ます。次に、それをとにサブクラス化SPBox
しSPMotor
ます。
SPBox
および/またはで実装を開始しSPMotor
、一般的なことが起こったら、それらをにリファクタリングしますSPAbstractSprite
。
「タッチ可能」の概念については、今のところ、それを名前付きのものにしようとすることを心配する必要はありません。上記と同じ方法でアプローチします。モーターまたはボックスにタッチ可能なサポートを実装し、後で抽象親クラスまでリファクタリングします。
しかし、私は非常に確かに、非常にデザインとコードがインターリーブされた人物であり、コードの行を書く前に、座ってボックス/行/階層の素晴らしいセットを引き出すのが本当に好きな人がいることを完全に認めています。
いずれにせよ、Appleが提供するクラスと例全体のクラス階層は非常に浅い傾向があり、抽象化は依然として頻繁に使用されますが、この抽象化を大量に行う傾向はないことに注意してください(UIView
すべての抽象コンテナです)たとえば、これらすべてのサブクラスに必要なグープのようなビュー)。