1. 程式人生 > >理解類建立型模式和物件建立型模式

理解類建立型模式和物件建立型模式

三年前初看GoF的設計模式時,對於抽象工廠和工廠方法模式的實現都要理解半天,更不用說對概念上的理解了。之後每次翻看此書都能有很多新的體會,像酒一樣越品越醇。一次和同事聊到此時,突然才明白類建立型和物件建立型的區別。

GoF的模式中明確提出抽象工廠是類建立型模式工廠方法是物件建立型模式。在實際的使用過程中,常常根據實際情況用了上面的兩種模式,一般較少區分類建立型模式和物件建立型模式。

先簡單概括一下:

類建立型模式:只需要知道建立產品的類或類層次結構,就可以創建出相應的物件。呼叫者只需要看到建立物件的類,而不需要知道自己將會得到什麼樣的一個物件。在這裡體現出了,呼叫者要知道建立物件的類。

物件建立型模式:

呼叫者通過一個函式來建立物件,所以呼叫者必須知道自己將要得到什麼樣的物件,只要知道將要得到物件的特徵就行了,將其傳給工廠方法來獲得要的物件。在這裡體現出了,呼叫者要知道物件的特徵。

未完待續。

相關推薦

理解建立模式物件建立模式

三年前初看GoF的設計模式時,對於抽象工廠和工廠方法模式的實現都要理解半天,更不用說對概念上的理解了。之後每次翻看此書都能有很多新的體會,像酒一樣越品越醇。一次和同事聊到此時,突然才明白類建立型和物件建立型的區別。 GoF的模式中明確提出,抽象工廠是類建立型模式,工廠方法是物

深入java ()建構函式物件建立的記憶體分配

之前的文章總結了java一些較為常用的關鍵字,現在我們要進入到類裡面,總結類的特徵(其中包括了記憶體和建構函式,gc垃圾回收),java中類的繼承和初始化順序(會涉及到ClassLoader),java多型的深入,java抽象類、介面的深入理解和例子。今天從類開

Java中載入過程物件建立過程

類載入過程: 1, JVM會先去方法區中找有沒有相應類的.class存在。如果有,就直接使用;如果沒有,則把相關類的.class載入到方法區 2, 在.class載入到方法區時,會分為兩部分載入:先載入非靜態內容,再載入靜態內容 3, 載入非靜態內容:把.class中的所有

設計模式物件建立 — prototype 原型模式

本系列部落格示例程式碼均為C++程式碼,個人之言,請持懷疑態度參考。如有錯誤,歡迎留言指正。 什麼是原型模式 建立一個應用需要由很多元件構成,原型模式旨在通過給工廠傳遞原型例項,讓後工廠通過拷貝構造這些原型來元件應用。 舉個例子:在abstrac

設計模式(4)-物件建立模式-Prototype模式

1.物件建立型模式 1.4          Protoype模式 1.4.1需求                 通過拷貝原形物件建立新的物件。 1.4.2結構 •P r o t o t y p e(Gr a p h i c) — 宣告一個克隆自身的介面。 •C o n

設計模式(2)-物件建立模式-Factory Method模式

1.物件建立型模式 1.2           FACTORY METHOD模式 1.2.1功能 工廠方法模式使用抽象工廠類定義一個用於建立物件(產品)的介面,讓子類(即具體工廠類)決定例項化哪一個類(即哪一個產品); 在工廠方法模式中,核心的工廠類不再負責所有的產品的建立

Java程式執行物件建立過程簡述

Java中一個物件建立分為兩個步驟: 載入類,建立物件。 載入類是將所寫的程式.java檔案編譯生成的.class檔案載入到記憶體中,保證了物件建立的預置環境。類載入完畢後才可以建立該類的物件。 第一步:載入類 1. 當開始執行一個類,虛擬機器首先試圖訪問指定啟

JS 函式物件建立

首先先說下編輯器Hbuilder快捷鍵 div.abc tab: <div class="abc"></div> div#abc tab: <div id="abc"></div> 我們每次獲取一個元素都要寫相同的很長

JVM系列一(Java記憶體區域物件建立).

一、JVM 記憶體區域 堆 - Heap 執行緒共享,JVM中最大的一塊記憶體,此記憶體的唯一目的就是存放物件例項,Java 堆是垃圾收集器管理的主要區域,因此很多時候也被稱為“GC堆”(Garbage Collected Heap),可以通過 -Xmx 和 -Xms 引數來控制該區域大小。 方法區 -

Java(三)併發控制5.繼承建立執行緒實現建立執行緒之間的區別

這是使用繼承建立的執行緒 class Person extends Thread { private int num=50; public Person(String name) { super(name); } public void run()

ES 對各欄位建立分詞 mapping建立 個人操作記錄

最近在搞es的查詢和,需要使用到模糊查詢 匹配 在之前使用的時候,java 中的String 在 es 預設建立的mapping type是 String 是可以模糊查詢的 ,但是新版的ES 廢棄了 string 變為  text 和 keyword 這樣一來 不管是 tr

[譯] JavaScript — 繼承、委託模式物件連結

原文地址: JavaScript — Inheritance, delegation patterns and Object linking 作者: NC Patro 學習 JavaScript (原型繼承) 中的繼承,行為/物件委託模式和關聯到其它物件的物件 什麼是繼承 在大多

Synchronized的理解以及內建鎖物件

java的內建鎖:每個java物件都可以用做一個實現同步的鎖,這些鎖成為內建鎖。執行緒進入同步程式碼塊或方法的時候會自動獲得該鎖,在退出同步程式碼塊或方法時會釋放該鎖。獲得內建鎖的唯一途徑就是進入這個鎖的保護的同步程式碼塊或方法。 java內建鎖是一個互斥鎖,這就是意味著最

java synchronized的理解以及內建鎖物件

在java程式設計中,經常需要用到同步,而用得最多的也許是synchronized關鍵字了,下面看看這個關鍵字的用法。 因為synchronized關鍵字涉及到鎖的概念,所以先來了解一些相關的鎖知識。 java的內建鎖:每個java物件都可以用做一個實現

的初始化物件的初始化

類的初始化格式:static{<--系列語句>} 當java程式執行時,需要某個類,但該類還沒有裝入記憶體,則java將類裝入記憶體,然後立即執行類中定義的類初始化塊,執行次序就是類初始化塊定義的次序。 public class Test{   static {S

java中的初始化物件的例項化區別

在程式RUN的一瞬間,什麼類啊,靜態的東西啊(靜態塊,靜態方法,靜態屬性),刷刷刷的就在記憶體中載入(你可以看作初始化)了,只加載一次,然後main方法開始執行(這就是為什麼main方法必須是靜態的原

JS概念理解(一)——函式物件、原型鏈、_proto_

        最近發現自己JS的基礎不太好,於是通過看書和大神的部落格,通過自己的理解將一些難懂的概念在此總結:         1.函式和物件的關係:         在JavaScript中一切物件都是通過函式建立的,某些情況下的寫法實際上是一種語法糖: var a

Scala的的私有屬性物件的私有欄位

在Scala中,一個類定義了一個屬性,如果不是private的 var age=0 那麼它也會預設當成private級別的屬性,同時會預設生成setter和getter方法,當呼叫的時候,會通過age的函式來取得age的值,就是getter方法 而預設生成的setter方法

觀察者模式發布/訂閱模式的區別

observe nbsp 初步 有時 觀察 觀察者 發生 狀態 發現 在事件總線(EventBus)的架構設計中,用到了發布/訂閱模式,但發現和觀察者模式挺接近,有時容易發生混淆,現試圖分清一下他們的關系。 觀察者模式的角色為觀察者(observer)

集合非泛集合的區別

但是 array 存儲 數據類型的轉換 是的 array對象 編譯期 都沒有 nbsp 他們倆個,一個是弱類型,一個是強類型。 而弱類型是指無法在應用程序編譯期間得到檢查,如array對象,你可以往這個對象中添加數字和字符都沒有問題。但是在遍歷操作的時候可能會牽扯到數據類型