設計構建器的規則

2021-08-03 16:12:09 字數 1011 閱讀 1369

設計構建器時乙個特別有效的規則:用盡可能簡單的方法使物件進入就緒狀態;如果可能避免呼叫任何其他方法,在構建器中唯一能安全呼叫的就是在基礎類中具有final屬性的那些方法,(也可以是被private 修飾的方法,因為被private修飾的方法自動具有final的屬性),這些方法不能被覆蓋,所以不會出現下面的情況.

abstract class glyph 

}class roundglyph extends glyph

void draw()

}public class polyconstructors

}

在glyph 中,draw()方法是「抽象的」(abstract),所以它可以被其他方法覆蓋。事實上,我們在

roundglyph中不得不對其進行覆蓋。但 glyph構建器會呼叫這個方法,而且呼叫會在roundglyph.draw()中

止,這看起來似乎是有意的。但請看看輸出結果:

glyph() before draw()

roundglyph.draw(), radius = 0

glyph() after draw()

roundglyph.roundglyph(), radius = 5

當glyph 的構建器呼叫 draw()時,radius 的值甚至不是預設的初始值1,而是 0。這可能是由於乙個點號或

者螢幕上根本什麼都沒有畫而造成的。這樣就不得不開始查詢程式中的錯誤,試著找出程式不能工作的原

因。前一節講述的初始化順序並不十分完整,而那是解決問題的關鍵所在。初始化的實際過程是這樣的:

(1) 在採取其他任何操作之前,為物件分配的儲存空間初始化成二進位制零。

(2) 就象前面敘述的那樣,呼叫基礎類構建器。此時,被覆蓋的draw()方法會得到呼叫(的確是在

roundglyph構建器呼叫之前),此時會發現 radius的值為 0,這是由於步驟(1)造成的。

(3) 按照原先宣告的順序呼叫成員初始化**。

(4) 呼叫衍生類構建器的主體。

設計模式筆記11 構建器

將乙個複雜物件的構建與其表示相分離,使得同樣的構建過程 穩定 可以建立不同的表示 變化 設計模式 gof class house class housebuilder virtual housebuilder protected house phouse virtual void buildpart...

設計模式 構建器 建造者 模式

定義 使用多個簡單的物件構建成乙個複雜的物件。個人理解 講乙個整體的各個部分組合到一起,例如乙個人有年齡 身高等屬性,統計資訊時可能會用到這個人某幾個屬性,那麼需要什麼就把什麼組合到一起。優點 建造者建造自己的東西,也可擴充套件。缺點 當內部比較複雜的時候,就會對應的建造很多類。public cla...

儲存器的構建

最近研究表明,人類進行創造時大腦活躍區域和記憶時的活動區域是重合的,即在此過程中高度依賴已有記憶和知識。顯而易見,儲存對於人類是如此的重要。同樣,儲存對於計算機來說也是相當重要。儲存器作用就是儲存資訊,便於現在或以後處理。從上圖可知當時鐘邊沿 即clk訊號由0變化到1時 輸入訊號d決定q的值 而在其...