2
JavaScriptに関する質問があります。仮想ペンを想像してみてください。ペンにはペンが1つしか付くことができませんが、ペンにはさまざまなペン先があります。私はペンオブジェクトを作成し、それにペン先を割り当てたいと思います。ペン先は、ペンのプロパティとメソッドにアクセスする必要があります。交換可能なペン先が付いたJavaScriptペンオブジェクト
おそらくこれはよく知られているデザインパターンです。このデザインパターンの名前は何ですか?
function Pen() {
var p1=5;
this.nib=null;
}
function Nib1() {
// needs access to p1.
}
function Nib2() {
// needs access to p1.
}
var p = new Pen();
var n1 = new Nib1();
p.nib = n1;
// n1 needs access to p1
私は正直言って良いデザインではないので、そのようなパターンはありません。何かあれば私はこれを反パターンと考えます。これらのクラス間で循環依存関係が作成されます(なぜなら、NibはPenにアクセスする必要があると言いますが、なぜですか?)、これは常に悪いことです。ストラテジーパターンのようなものは、そのような問題に対処することになっています。 –
「p1へのアクセスが必要」という意味はどうですか?可能な限り循環依存を避けるために、一般にアクセスは一方向です(https://en.wikipedia.org/wiki/Circular_dependency)。多分、OOPの概念に関するこれらの考えはあなたを助けるだろうか? (http://www.adobe.com/devnet/actionscript/learning/oop-concepts/composition-and-aggregation.htmlまたはhttps://stackoverflow.com/questions/2218937/has-a-is-a-terminology -in-object-oriented-language) ペンがペン先ペンを持っていて、ペン先がペン先生の関数に渡すいくつかの情報に依存する "コンポジション"を探している気がします。 –
あなたが奇妙なアナロジーを作っているのか、jsでペンを作成したいのか分かりません。あなたは、通常、この種の共依存関係から離れることを望んでいます...関数型プログラミングとクロージャーを見てみてください。それはJSを使用するための堅実な方法です。 JSを使ってOOP全体のルートを下げることはかなり面倒です。 –