學習 gof 設計模式的重要性:
gof 的設計模式反覆向你強調乙個宗旨:要讓你的程式盡可能的可重用.
建立模式的人是大師,但是拘泥於模式的人永遠是工匠.
設計模式之 factory
定義:提供建立物件的介面.
如何使用?
工廠模式中有: 工廠方法(factory method) 抽象工廠(abstract factory).
上例中,我們使用的是簡單的工廠方法. 這兩個模式沒有很明顯的區別,區別在於需要建立
物件的複雜程度上。如果我們建立物件的方法變得複雜了,我們就可能要將上例中 factory
變成抽象類,將共同部分封裝在抽象類中,不同部分使用子類實現:
public abstract class factory
public class ******factory extends factory
public sample2 creator()
}public class bombfactory extends factory
public sample2 creator()
}factorymethod 往往只是建立單個的例項。abstract factory 建立一系列的例項組,這些例項彼此相關。
舉例 1
下圖是來自天極網" 閻巨集"的 爪哇語言抽象工廠創立性模式介紹 中的抽象工廠圖:
在這張圖中, 有兩類產品介面 inte***ce ram 和 inte***ce cpu; 同時有兩個建立方
法:macproducer和pcproducer,這兩個建立方法中都有createcpu()和createram(),返回的
例項物件組是 cpu 和 ram, 這是分別來自兩類產品介面,表面彼此是相關的.因此它是抽象工
廠.舉例 2
我們以 jive 的 forumfactory 為例:
public abstract class forumfactory
//以下使用了 singleton 單態模式
if (factory == null)
catch (exception e) }}
}//now, 返回 proxy.用來限制授權對 forum 的訪問
return new forumfactoryproxy(authorization, factory,
factory.getpermissions(authorization));
}//真正建立 forum 的方法由繼承 forumfactory 的子類去完成.
public abstract forum createforum(string name, string description)
throws unauthorizedexception, forumalreadyexist***ception;
....
}因為現在的 jive 是通過資料庫系統存放論壇帖子等內容資料,如果有人要擴充套件為純粹的文
件系統存放的論壇帖子,這個工廠方法 forumfactory 就提供了提供動態介面:
private static string classname =
"com.jivesoftware.forum.database.dbforumfactory";
你可以使用自己開發的建立 forum 的方法代替
com.jivesoftware.forum.database.dbforumfactory 就可以.
在上面的一段**中一共用了三種模式,除了工廠模式外,還有 singleton 單態模式,以及
proxy模式,proxy模式主要用來授權使用者對forum的訪問,因為訪問forum有兩種人:乙個是
註冊使用者 乙個是遊客 guest,那麼那麼相應的許可權就不一樣,而且這個許可權是貫穿整個系統
的,因此建立乙個 proxy,類似閘道器的概念,可以很好的達到這個效果.
java設計模式 工廠模式一
工廠方法模式所包含的成員 1 抽象產品 product 抽象類或者介面,用於定義具體產品必須實現的方法 2 具體產品 concreteproduct 如果product是乙個抽象類,那麼具體產品是product的子類 如果product是乙個介面,那麼具體產品是實現該介面的類。注 一般情況下,乙個抽...
Java設計模式(一) 工廠模式
工廠模式,顧名思義就是像工廠一樣生產物件,我們知道一家生產筆的工廠,不僅僅只生產鉛筆,還有原子筆和鋼筆等型別。同理,我們採用工廠類來獲取各物件。以工廠生產筆為例,物件是筆,類penfactory是生產筆的工廠。建立所有筆的父類pen,有乙個通用的方法write 因為每一種筆寫的內容不容,方法的實現不...
設計模式Java實現(一)
工廠模式 工廠模式在實踐中有如下三種常用 簡單工廠 factory 工廠方法 factory method 和抽象工廠 abstract factory 其中 factory並不是gof提出的23種設計模式之一,但由於其實現簡單所以也被廣泛使用。簡單工廠 類設計圖 工廠方法 類設計圖 抽象工廠 類設...