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路線可能會變得非常麻煩。 –