【學習筆記】建立模式之原型模式
在某些應用程式中,某些物件(一種類別)比較複雜,且其建立過程比較複雜,並且我們需要頻繁使用到這些物件。如果我們一直使用new的方式來建立這些物件,會導致程式效率低下。 如果我們預先建立好該物件(即原型),通過該物件的自我複製(克隆)得到物件例項,從而提高程式碼效率,這就是原型模式的思想。
原型模式:用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。
該模式的關鍵在於“克隆”,首先建立好原型物件,然後在需要使用時,通過克隆複製一個新的個體(注意深複製與淺複製)。
優點:1、效能提高。 2、逃避建構函式的約束。
缺點: 1、配備克隆方法需要對類的功能進行通盤考慮,這對於全新的類不是很難,但對於已有的類不一定很容易,特別當一個類引用不支援序列化的間接物件,或者引用含有迴圈結構的時候。 2、必須實現 Cloneable 介面。
相關推薦
【學習筆記】建立模式之原型模式
在某些應用程式中,某些物件(一種類別)比較複雜,且其建立過程比較複雜,並且我們需要頻繁使用到這些物件。如果我們一直使用new的方式來建立這些物件,會導致程式效率低下。 如果我們預先建立好該物件(即原型),通過該物件的自我複製(克隆)得到物件例項,從而提高程式碼效
【學習筆記】建立模式之抽象工廠模式
之前工廠模式說到不明白工廠模式與簡單工廠的區別。後來想到,簡單工廠,每當新增一個具體產品時,需要在工廠中進行判斷修改;而工廠方法中,將工廠進行抽象,對產品進行細緻的生產,即要生產某個具體產品時,需要對應的具體工廠,新增產品時,需要新增一個新的對應的工廠類以及對應
【學習筆記】深入理解js原型和閉包(3)——prototype原型
既typeof之後的另一位老朋友! prototype也是我們的老朋友,即使不瞭解的人,也應該都聽過它的大名。如果它還是您的新朋友,我估計您也是javascript的新朋友。 在咱們的第一節(深入理解js原型和閉包(1)——一切皆是物件)中說道,函式也是一種物件。他也是屬性的集合,你也可以
【學習筆記】深入理解js原型和閉包(8)——簡述【執行上下文】上
什麼是“執行上下文”(也叫做“執行上下文環境”)?暫且不下定義,先看一段程式碼: 第一句報錯,a未定義,很正常。第二句、第三句輸出都是undefined,說明瀏覽器在執行console.log(a)時,已經知道了a是undefined,但卻不知道a是10(第三句中)。 在一段js程式碼拿過來真正一句一
【學習筆記】深入理解js原型和閉包(9)—— 簡述【執行上下文】下
繼續上一篇文章(https://www.cnblogs.com/lauzhishuai/p/10078231.html)的內容。 上一篇我們講到在全域性環境下的程式碼段中,執行上下文環境中有如何資料: 變數、函式表示式——變數宣告,預設賦值為undefined; this——賦值; 函式宣告
【學習筆記】深入理解js原型和閉包(11)——執行上下文棧
繼續上文的內容。 執行全域性程式碼時,會產生一個執行上下文環境,每次呼叫函式都又會產生執行上下文環境。當函式呼叫完成時,這個上下文環境以及其中的資料都會被消除,再重新回到全域性上下文環境。處於活動狀態的執行上下文環境只有一個。 其實這是一個壓棧出棧的過程——執行上下文棧。如下圖: 可
【學習筆記】深入理解js原型和閉包(12)——簡介【作用域】
提到作用域,有一句話大家(有js開發經驗者)可能比較熟悉:“javascript沒有塊級作用域”。所謂“塊”,就是大括號“{}”中間的語句。例如if語句: 再比如for語句: 所以,我們在編寫程式碼的時候,不要在“塊”裡面宣告變數,要在程式碼的一開始就宣告好了。以避免發生歧義。如: &nbs
【學習筆記】深入理解js原型和閉包(15)——閉包
前面提到的上下文環境和作用域的知識,除了瞭解這些知識之外,還是理解閉包的基礎。 至於“閉包”這個詞的概念的文字描述,確實不好解釋,我看過很多遍,但是現在還是記不住。 但是你只需要知道應用的兩種情況即可——函式作為返回值,函式作為引數傳遞。 第一,函式作為返回值 如上程式碼,bar函式作為返回值,賦
【學習筆記】深入理解js原型和閉包(17)——補this
本文對《深入理解js原型和閉包(10)——this》一篇進行補充,原文連結:https://www.cnblogs.com/lauzhishuai/p/10078307.html 原文中,講解了在javascript中this的各個情況,寫完之後發現還落下一種情況,就此補充。 原文中thi
【學習筆記】深入理解js原型和閉包(18)——補充:上下文環境和作用域的關係
本系列用了大量的篇幅講解了上下文環境和作用域,有些人反映這兩個是一回兒事。本文就用一個小例子來說明一下,作用域和上下文環境絕對不是一回事兒。 再說明之前,咱們先用簡單的語言來概括一下這兩個的區別。 00 上下文環境: 可以理解為一個看不見摸不著的物件(有若干個屬性),雖然看不見
【學習筆記】資料庫優化之索引(聚簇索引&非聚簇索引)
索引:對資料庫表中一列或多列的值進行排序的一種結構,通過索引可快速訪問資料庫表中的特定資訊,即通過索引對資料列的值進行結構化排序。 其中,索引包含聚簇索引和非聚簇索引 聚簇索引的順序就是資料的物理儲存順序 非聚簇索引的索引順序與資料物理排列順序無關 所以一個表
【學習筆記】lua中基於原型的繼承
print("-------------------") --基於原型的繼承 --理解為基類 Robort = {id = 001, name = "Li Lei"} function Robort:getId() return self.id end function Robort:setId(
【學習筆記】FreeMarker 之於Servlet與Stuts2的應用
patch warnings ftl 4.0 type shm .html enter src FreeMarker應用在Servlet(0配置web.xml形式): 準備環境: tomcat7、eclipse最新版、jdk1.8、freemarker v2.3.20.ja
【學習筆記】 唐大仕—Java程式設計 第4講 類、包和介面之4.2 類的繼承
【學習筆記】 唐大仕—Java程式設計 第4講 類、包和介面之4.2 類的繼承 super的使用 1.使用super訪問父類的域和方法 注意:正是由於繼承,使用this可以訪問父類的域和方法。但是有時為了明確指明父類的域和方法,就要用關鍵字super。this和super都是指當前同一個物件
【學習筆記】 唐大仕—Java程式設計 第4講 類、包和介面之4.4 訪問修飾符
修飾符(modifiers) 訪問修飾符(access modifiers) 如public/private等 其他修飾符 如abstract等 可以修飾類、也可以修飾類的成員(欄位、方法) 同一個類中 同一個包中 不同包中的子類
【學習筆記】 唐大仕—Java程式設計 第4講 類、包和介面之4.6 介面
【學習筆記】 唐大仕—Java程式設計 第4講 類、包和介面之4.6 介面 介面(interface) 介面,某種特徵的約定 定義介面interface 所有方法都自動是public abstract 實現介面implements 可以實現多繼承 與類的繼承關係無關 面向介面程式設計,而不
【學習筆記】慕課網—Java設計模式精講 第3章 軟體設計七大原則-3-1 本章導航
/** * 軟體設計七大原則-本章導航 學習筆記 * @author cnRicky * @date 2018.11.7 */ 本章導航 開閉原則(所有原則的一個基礎) 依賴倒置原則 單一職責原則 介面隔離原則 迪米特法則(最少知道原則) 里氏替換原則 合成/複用原則(組合
【學習筆記】慕課網—Java設計模式精講 第3章 軟體設計七大原則-3-2 開閉原則
/** * 軟體設計七大原則-開閉原則 * @author cnRicky * @date 2018.11.7 */ 開閉原則 定義:一個軟體實體如類、模組和函式應該對擴充套件開放,對修改關閉 強調的是用抽象構建框架,用實現擴充套件細節 優點:提高軟體系統的可複用性及可維護性 開閉原則
【學習筆記】 唐大仕—Java程式設計 第5講 深入理解Java語言之5.2 多型及虛方法呼叫
/** * 多型及虛方法呼叫 * @author cnRicky * @date 2018.11.7 */ 多型 多型(Polymorphism)是指一個程式中相同的名字表示不同的含義的情況 多型有兩種情形 編譯時多型: *過載(Overload)(多個同名的不同方法) *如 p.sayH
【學習筆記】慕課網—Java設計模式精講 第3章 軟體設計七大原則-3-6 迪米特原則(最少知道原則)
/** * 軟體設計七大原則-迪米特原則 學習筆記 * @author cnRicky * @date 2018.11.10 */ 迪米特原則(最少知道原則) 一個物件應該對其他物件保持最少的瞭解。又叫最少知道原則 迪米特原則主要強調:儘量降低類與類之間的耦合 優點:降低類與類之