メソッド指向について
SIEの開発している最中に思いついたこと
SIEを開発している途中で、以下のようなことを思いつきました。ふさわしい言葉がなかったので、ここでは仮に「メソッド指向」としておきます。誰かが、もうすでに思いついていそうですが、アイデアの備忘録として、ここに書き残しておきます。
メソッド指向
メソッド指向はオブジェクトを中心に考えるのではなくて、メソッドを中心に、開発を進めていく考え方です。次の特徴があります。
- オブジェクトやクラスがメソッドを持つのではなくて、メソッドがオブジェクトを持つ(オブジェクトが付属品)
- メソッドの返り値はメソッド
- 処理中のオブジェクトは隠蔽される(JavaScriptの場合、リテラル以外はすべてカプセル内部へ)
オブジェクト指向の場合、共通する属性があれば、クラスにメソッドやプロパティとしてまとめておきます。ですが、メソッド指向の場合、「クラス」や「プロパティ」という概念はありません。メソッドとオブジェクトがあるだけです。
コードの例(JavaScript)
//addメソッドを呼び出す var add = Function.method("add"), b = Function.method("add"); add.number(2); add.number(12); //この時点で、内部の数値オブジェクトは14 add.element("p"); //p要素のオブジェクトを生成。新しいaddメソッドを返す b.number(2); var scale = Function.method("scale"); scale.number(2) //scaleメソッドは2倍メソッドと定義 //以下はmatrix.scale(2)と同じ効果 scale.matrix({ a : 1, b : 0, c : 0, d : 1, e : 0, f : 0 }); //pointオブジェクトを2倍しているので、x座標は20、y座標は40となる scale.point({ x : 10, y : 20, });
実際に実装可能かどうかはわかりません
もし、後日、時間があれば、上記の例を実装してみようかと思います。