2
我有一个JavaScript问题。想象一下虚拟笔。尽管笔只能有一个笔尖,但笔可以有许多不同的可能笔尖。我想创建一个笔对象,然后为它分配一个笔尖。笔尖需要访问笔的属性和方法。具有可替换笔尖的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)。也许这些关于面向对象概念的想法会帮助你? (http://www.adobe.com/devnet/actionscript/learning/oop-concepts/composition-and-aggregation.html或https://stackoverflow.com/questions/2218937/has-a-is-a-terminology面向对象的语言) 我有一种感觉,你只是在寻找“构图”,其中笔有一个笔尖,而笔尖则依赖于笔通过笔尖的一些信息。 –
我不确定你是在做一个奇怪的比喻还是你想在js中创建一支笔。您通常希望远离这种类型的相关关系......尝试着看功能性编程和关闭。这是一个使用JS的可靠方法。使用JS走向整个OOP路线可能会变得非常麻烦。 –