ソフトウェア開発メモ

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

NSOperationと逐次的凝集

 今までクラスの凝集度は通信的凝集になるべきだと無意識に思いこんでいた。いわゆるデータ構造の詳細(=インスタンス変数)を見せないためのクラス。クラスを作る意味としてよく挙げられますね。そうではなくて、クラスは複雑な手続きや処理を隠すためにも使われる事を今日はっと気づいた。

 

 例えば、iOSでいうNSOperationだ。mainメソッドをオーバライドして、そこにバッチ処理を実装する形で使う。実際はメソッドだけど、オブジェクト指向的には関数オブジェクトをインスタンス変数に保持、隠ぺいするイメージだと思う。NSBlockOperationなんかはまさにそういう感じですね。

 

 て考えると、処理そのものの詳細を見せない事がクラスの目的なのかなと? 

 

 後よくよく考えると、処理過程を隠ぺいするという意味ではファクトリーやビルダーパターンもそうですね。インスタンスの生成処理はあるデータ(=インスタンス)を中心に処理を廻すという事で逐次的凝集なのかな? あと、コマンドとかストレージとかもどんどんぼろがでてきたw。