ソフトウェア開発メモ

日々のソフトウェア設計、実装で考えている、気づいた事を書いています。それが真実か否かは保証しません。悪しからず。

(Objective-Cの)カテゴリーと責務

 オブジェクトの責務*1は職場社会同様、周りの環境によって決まる。

 例えば、iOSが提供する各クラスのメソッドは典型的なアプリの用途を想定して公開している(はず)。しかし、アプリ開発ではそれでは足りないケースが多々有る。その場合にカテゴリーを使ってメソッドを追加する。

 つまりアプリという特定の職場社会に特化したサービスを提供するようにメソッドを追加するのである。この感覚がクラスの責務という本来の意味にしっくりくるかと思う。始めに戻るけど責務は周りの環境によって変わる。環境とはアプリ、使うフレームワーク等等である。

 ついでに。カテゴリー自体はSmalltalk由来の機能である。Smalltalkは自分で好き勝手にシステムを拡張する形でプログラミングする事を考えればこの考えは間違ってないと思う。

*1:ここでいう責務は他のオブジェクトに対して提供するサービス(=メソッド、プロパティ)として定義する。