设计模式
文章平均质量分 80
arielxp
这个作者很懒,什么都没留下…
展开
-
设计模式之Factory
定义:提供创建对象的接口. 为何使用?工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。 为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑实用工厂模式,虽然这样做,可能多做原创 2004-06-24 19:47:00 · 1866 阅读 · 1 评论 -
設計模式之Composite(組合)
Composite定義:將物件以樹形結構組織起來,以達成“部分-整體” 的層次結構,使得用戶端對單個物件和組合物件的使用具有一致性。 Composite比較容易理解,想到Composite就應該想到樹形結構圖。組合體內這些物件都有共同介面,當組合體一個物件的方法被呼叫執行時,Composite將遍曆(Iterator)整個樹形結構,尋找同樣包含這個方法的物件並實現呼叫執行。可以用牽一動百來形容。原创 2004-06-24 19:53:00 · 2747 阅读 · 0 评论 -
設計模式之Flyweight(享元)
Flyweight定義:避免大量擁有相同內容的小類別的開銷(如耗費記憶體),使大家共用一個類別(元類別)。 爲什麽使用?面向物件語言的原則就是一切都是物件,但是如果真正使用起來,有時物件數可能顯得很龐大,比如,文字處理軟體,如果以每個文字都作爲一個物件,幾千個字,物件數就是幾千,無疑耗費記憶體,那麽我們還是要"求同存異",找出這些物件群的共同點,設計一個元類別,封裝可以被共用的類別,另外,還有一些原创 2004-06-24 19:57:00 · 2242 阅读 · 0 评论 -
設計模式之Command
Command模式是最讓我疑惑的一個模式,我在閱讀了很多代碼後,才感覺隱約掌握其大概原理,我認爲理解設計模式最主要是掌握起原理構造,這樣才對自己實際編程有指導作用。Command模式實際上不是個很具體,規定很多的模式,正是這個靈活性,讓人有些confuse。 Command定義不少Command模式的代碼都是針對圖形介面的,它實際就是功能表命令,我們在一個下拉功能表選擇一個命令時,然後會執行一些動原创 2004-06-24 20:07:00 · 3891 阅读 · 0 评论 -
設計模式之Interpreter(解釋器)
Interpreter定義:定義語言的文法 ,並且建立一個解釋器來解釋該語言中的句子。 Interpreter似乎使用面不是很廣,它描述了一個語言解釋器是如何構成的,在實際應用中,我們可能很少去構造一個語言的文法。我們還是來簡單的瞭解一下: 首先要建立一個介面,用來描述共同的操作。 public interface AbstractExpression { void interpret( C原创 2004-06-24 20:13:00 · 2366 阅读 · 0 评论 -
設計模式之Prototype(原型)
定義:用原型實例指定創建物件的種類,並且通過拷貝這些原型創建新的物件。 Prototype 模式允許一個物件再創建另外一個可定制的物件,根本無需知道任何如何創建的細節,工作原理是:通過將一個原型物件傳給那個要發動創建的物件,這個要發動創建的物件通過請求原型物件拷貝它們自己來實施創建。 如何使用?因為 Java 中提供的 clone() 方法來實現物件的克隆(具體瞭解clone()按這裏),所以 P原创 2004-06-24 19:48:00 · 1687 阅读 · 0 评论 -
设计模式之Singleton(单态)
定义:Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。 还有, singleton能够被状态化; 这样,多个单态类在一起就可以作为一个状态仓库一样向外提供服务,比如,你要论坛中的帖子计数器,每次浏览一次需要计数,单态类能否保持住这个计数,并且能synchronize的安全自动加1,如果你要原创 2004-06-24 19:49:00 · 1565 阅读 · 0 评论 -
設計模式之Facade(外觀)
Facade的定義: 爲子系統中的一組介面提供一個一致的介面。 Facade一個典型應用就是資料庫JDBC的應用,如下例對資料庫的操作: public class DBCompare { Connection conn = null; PreparedStatement prep = null; ResultSet rset = null; try { Class.fo原创 2004-06-24 19:50:00 · 1879 阅读 · 0 评论 -
設計模式之Bridge
Bridge定義 :將抽象和行為劃分開來,各自獨立,但能動態的結合. 為什麼使用?通常,當一個抽象類或介面有多個具體實現(concrete subclass),這些concrete之間關係可能有以下兩種:1. 這多個具體實現之間恰好是並列的,如前面舉例,打樁,有兩個concrete class:方形樁和圓形樁;這兩個形狀上的樁是並列的,沒有概念上的重複,那麼我們只要使用繼承就可以了.2.實際應用上原创 2004-06-24 19:55:00 · 2025 阅读 · 0 评论 -
設計模式之Template
Template定義:定義一個操作中演算法的骨架,將一些步驟的執行延遲到其子類別中。 其實Java的抽象類別本來就是Template模式,因此使用很普遍。而且很容易理解和使用,我們直接以示例開始: public abstract class Benchmark{ /** * 下面操作是我們希望在子類別中完成 */ public abstract void benchmark();原创 2004-06-24 19:57:00 · 1996 阅读 · 2 评论 -
設計模式之Iterator
這個模式已經被用來遍曆Collection中物件。使用頻率很高。在Java中無需專門闡述,在大多數場合也無需自己製造一個Iterator,只要將物件裝入Collection中,我們就直接可以使用Iterator模式。原创 2004-06-24 20:14:00 · 2748 阅读 · 0 评论 -
設計模式之Builder
Builder模式定義:將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 Builder模式是一步一步創建一個複雜的物件,它允許用戶可以只通過指定複雜物件的類型和內容就可以構建它們。用戶不知道內部的具體構建細節。Builder模式是非常類似抽象工廠模式,細微的區別大概只有在反復使用中才能體會到。 爲何使用?是爲了將構建複雜物件的過程和它的部件解耦。注意: 是解耦過程和部件原创 2004-06-24 19:49:00 · 1594 阅读 · 0 评论 -
設計模式之Visitor
Visitor定義作用於某個物件群中各個物件的操作。 它可以使你在不改變這些物件本身的情況下,定義作用於這些物件的新操作。 在Java中,Visitor模式實際上是分離了collection結構中的元素和對這些元素進行操作的行爲。 爲何使用Visitor?Java的Collection(包括Vector和Hashtable)是我們最經常使用的技術,可是Collection好象是個黑色大染缸,本來有原创 2004-06-24 20:13:00 · 2737 阅读 · 0 评论 -
設計模式之Adapter(適配器)
定義:將兩個不相容的類別糾合在一起使用,屬於結構型模式,需要有Adaptee(被適配者)和Adaptor(適配器)兩個身份。 爲何使用?我們經常碰到要將兩個沒有關係的類別組合在一起使用,第一解決方案是:修改各自類別的介面,但是如果我們沒有源代碼,或者,我們不願意爲了一個應用而修改各自的介面。 怎麽辦? 使用Adapter,在這兩種介面之間創建一個混合介面(混血兒)。 如何使用?實現Adapter原创 2004-06-24 19:52:00 · 3700 阅读 · 0 评论 -
設計模式之Memento(備忘機制)
Memento定義:memento是一個保存另外一個物件內部狀態拷貝的物件。這樣以後就可以將該物件恢復到原先保存的狀態。 Memento模式相對也比較好理解,我們看下列代碼: public class Originator { private int number; private File file = null; public Originator(){} // 創原创 2004-06-24 19:58:00 · 2302 阅读 · 1 评论 -
設計模式之Strategy(策略)
Strategy是屬於設計模式中 物件行爲型模式,主要是定義一系列的演算法,把這些演算法一個個封裝成單獨的類別。 Stratrgy應用比較廣泛,比如, 公司經營業務變化圖, 可能有兩種實現方式,一個是線條曲線,一個是框圖(bar),這是兩種演算法,可以使用Strategy實現。 這裏以字串替代爲例, 有一個文件,我們需要讀取後,希望替代其中相應的變數,然後輸出。關於替代其中變數的方法可能有多種方法原创 2004-06-24 20:10:00 · 2476 阅读 · 0 评论 -
設計模式之Mediator(仲介者)
Mediator定義:用一個仲介物件來封裝一系列關於物件交互行爲。 爲何使用Mediator?各個物件之間的交互操作非常多;每個物件的行爲操作都依賴彼此對方,修改一個物件的行爲,同時會涉及到修改很多其他物件的行爲,如果使用Mediator模式,可以使各個物件間的耦合鬆散,只需關心和 Mediator的關係,使多對多的關係變成了一對多的關係,可以降低系統的複雜性,提高可修改擴展性。 如何使用? 首先原创 2004-06-24 20:12:00 · 2409 阅读 · 0 评论 -
JSP设计模式
jsp设计模式---MVC模式一:介绍以前自己是写asp和php代码的,后来为了赶上时代的步伐吧.我开始涉足jsp. 但是在刚刚开始写的时候,总是喜欢拿jsp和asp对比着来写程序.后来发现这样真的很笨.而且这样写jsp代码不如就写asp好了,根本就体现不出jsp和java的强大.当然这个就是我今天要和大家讨论的在jsp中实现MVC三层模式.二:什么是MVCMVC是MODEL_VIEW_CONTR原创 2004-06-27 14:32:00 · 4796 阅读 · 3 评论 -
設計模式之Proxy(代理)
理解並使用設計模式,能夠培養我們良好的面向物件編程習慣,同時在實際應用中,可以如魚得水,享受遊刃有餘的樂趣。 Proxy是比較有用途的一種模式,而且變種較多,應用場合覆蓋從小結構到整個系統的大結構,Proxy是代理的意思,我們也許有代理伺服器等概念,代理概念可以解釋爲:在出發點到目的地之間有一道中間層,意爲代理。 設計模式中定義: 爲其他物件提供一種代理以控制對這個物件的訪問。 爲什麽要使用Pro原创 2004-06-24 19:51:00 · 2014 阅读 · 0 评论 -
設計模式之Decorator(油漆工)
Decorator常被翻譯成"裝飾",我覺得翻譯成"油漆工"更形象點,油漆工(decorator)是用來刷油漆的,那麼被刷油漆的物件我們稱decoratee.這兩種實體在Decorator模式中是必須的. Decorator定義:動態給一個物件添加一些額外的職責,就象在牆上刷油漆.使用Decorator模式相比用生成子類方式達到功能的擴充顯得更為靈活. 為什麼使用Decorator?我們通常原创 2004-06-24 19:54:00 · 2077 阅读 · 0 评论 -
設計模式之Observer
Java深入到一定程度,就不可避免的碰到設計模式(design pattern)這一概念,瞭解設計模式,將使自己對java中的介面或抽象類別應用有更深的理解。設計模式在java的中型系統中應用廣泛,遵循一定的編程模式,才能使自己的代碼便於理解,易於交流,Observer(觀察者)模式是比較常用的一個模式,尤其在介面設計中應用廣泛,而本站所關注的是Java在電子商務系統中應用,因此想從電子商務實例中原创 2004-06-24 20:06:00 · 2564 阅读 · 0 评论 -
設計模式之Chain of Responsibility(職責鏈)
Chain of Responsibility定義Chain of Responsibility(CoR) 是用一系列類別(classes)試圖處理一個請求request,這些類別之間是一個鬆散的耦合,唯一共同點是在他們之間傳遞request。 也就是說,來了一個請求,A類別先處理,如果沒有處理,就傳遞到B類別處理,如果沒有處理,就傳遞到C類別處理,就這樣象一個鏈條(chain)一樣傳遞下去。 如原创 2004-06-24 20:07:00 · 2554 阅读 · 0 评论 -
設計模式之State
State的定義: 不同的狀態,不同的行爲;或者說,每個狀態有著相應的行爲。 何時使用?State模式在實際使用中比較多,適合"狀態的切換"。因爲我們經常會使用If elseif else 進行狀態切換, 如果針對狀態的這樣判斷切換反復出現,我們就要聯想到是否可以採取State模式了。 不只是根據狀態,也有根據屬性。如果某個物件的屬性不同,物件的行爲就不一樣,這點在資料庫系統中出現頻率比較高,我們原创 2004-06-24 20:09:00 · 2350 阅读 · 0 评论