
设计模式
iteye_1236
这个作者很懒,什么都没留下…
展开
-
設計模式之Iterator
這個模式已經被用來遍曆 Collection 中物件 。 使用頻率很高 。 在 Java 中無需專門闡述 , 在大多數場合也無需自己製造一個 Iterator, 只要將物件裝入 Collection 中,我們就直接可以使用 Iterator 模式。 ...2009-10-23 16:39:18 · 74 阅读 · 0 评论 -
設計模式之Decorator(油漆工)
Decorator常被翻譯成"裝飾",我覺得翻譯成"油漆工"更形象點,油漆工(decorator)是用來刷油漆的,那麼被刷油漆的物件我們稱decoratee.這兩種實體在Decorator模式中是必須的. Decorator定義 : 動態給一個物件添加一些額外的職責,就象在牆上刷油漆.使用Decorator模式相比用生成子類方式達到功能的擴充顯得更為靈活. 為什...原创 2009-10-23 16:48:16 · 93 阅读 · 0 评论 -
設計模式之Composite(組合)
Composite 定義 : 將物件以樹形結構組織起來 , 以達成 “ 部分-整體 ” 的層次結構,使得用戶端對單個物件和組合物件的使用具有一致性。 Composite 比較容易理解,想到 Composite 就應該想到樹形結構圖。組合體內這些物件都有共同介面 , 當組合體一個物件的方法被呼叫執行時, Composite 將遍曆 (Iter...原创 2009-10-23 16:48:55 · 85 阅读 · 0 评论 -
設計模式之Adapter(適配器)
定義 : 將兩個不相容的類別糾合在一起使用,屬於結構型模式 , 需要有 Adaptee( 被適配者 ) 和 Adaptor( 適配器 ) 兩個身份。 爲何使用 ? 我們經常碰到要將兩個沒有關係的類別組合在一起使用 , 第一解決方案是:修改各自類別的介面,但是如果我們沒有源代碼,或者,我們不願意爲了一個應用而修改各自的介面。 ...原创 2009-10-23 16:49:17 · 69 阅读 · 0 评论 -
設計模式之Proxy(代理)
理解並使用設計模式 , 能夠培養我們良好的面向物件編程習慣 , 同時在實際應用中 , 可以如魚得水 , 享受遊刃有餘的樂趣。 Proxy 是比較有用途的一種模式 , 而且變種較多 , 應用場合覆蓋從小結構到整個系統的大結構 ,Proxy 是代理的意思 , 我們也許有代理伺服器等概念 , 代理概念可以解釋爲 : 在出發點到目的地之間有一道中間層...原创 2009-10-23 16:49:43 · 75 阅读 · 0 评论 -
設計模式之Facade(外觀)
Facade 的定義 : 爲子系統中的一組介面提供一個一致的介面。 Facade 一個典型應用就是資料庫 JDBC 的應用 , 如下例對資料庫的操作 : public class DBCompare { Connection conn = null; PreparedStatement prep = null...原创 2009-10-23 16:50:14 · 77 阅读 · 0 评论 -
設計模式之Builder
Builder 模式定義 : 將一個複雜物件的構建與它的表示分離 , 使得同樣的構建過程可以創建不同的表示。 Builder 模式是一步一步創建一個複雜的物件 , 它允許用戶可以只通過指定複雜物件的類型和內容就可以構建它們。用戶不知道內部的具體構建細節。 Builder 模式是非常類似抽象工廠模式 , 細微的區別大概只有在反復使用中才能體會到。 ...原创 2009-10-23 16:50:41 · 70 阅读 · 0 评论 -
设计模式之Singleton(单态)
定义 : Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。 还 有, singleton能够被状态化; 这样,多个单态类在一起就可以作为一个状态仓库一样向外提供服务,比如,你要论坛中的帖子计数器,每次浏览一次需要计数,单态类能否保持住这个计数,并且 能synchr...原创 2009-10-23 16:51:04 · 71 阅读 · 0 评论 -
設計模式之Prototype(原型)
定義: 用原型實例指定創建物件的種類,並且通過拷貝這些原型創建新的物件。 Prototype 模式允許一個物件再創建另外一個可定制的物件,根本無需知道任何如何創建的細節,工作原理是:通過將一個原型物件傳給那個要發動創建的物件,這個要發動創建的物件通過請求原型物件拷貝它們自己來實施創建。 如何使用? 因為 Java 中提供的 clone() 方法來實現物件的克隆(具體瞭解...原创 2009-10-23 16:51:33 · 64 阅读 · 0 评论 -
设计模式之Factory
定义:提供创建对象的接口. 为何使用? 工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。 为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼...原创 2009-10-23 16:52:11 · 77 阅读 · 0 评论 -
OO设计的其中三个原则
OO 设计的其中三个原则: 封装变化 http://blog.youkuaiyun.com/nuaalfm/archive/2007/10/04/1811097.aspx 多用组合,少用继承 http://hi.baidu.com/blueman/blog/item/7a0618174a8928044b90a768.html 对接口编程而不对类编...原创 2009-08-14 08:47:01 · 98 阅读 · 0 评论 -
設計模式之Bridge
Bridge定義 : 將抽象和行為劃分開來,各自獨立,但能動態的結合. 為什麼使用? 通常,當一個抽象類或介面有多個具體實現(concrete subclass),這些concrete之間關係可能有以下兩種: 1. 這多個具體實現之間恰好是並列的,如前面舉例,打樁,有兩個concrete class:方形樁和圓形樁;這兩個形狀上的樁是並列的,沒有概念上的重複,那麼我們只要使用繼承就...原创 2009-10-23 16:47:50 · 178 阅读 · 0 评论 -
設計模式之Template
Template 定義 : 定義一個操作中演算法的骨架 , 將一些步驟的執行延遲到其子類別中。 其實 Java 的抽象類別本來就是 Template 模式 , 因此使用很普遍。而且很容易理解和使用 , 我們直接以示例開始 : public abstract class Benchmark { /** * 下...原创 2009-10-23 16:47:19 · 64 阅读 · 0 评论 -
設計模式之Interpreter(解釋器)
Interpreter 定義 : 定義語言的文法 , 並且建立一個解釋器來解釋該語言中的句子。 Interpreter 似乎使用面不是很廣 , 它描述了一個語言解釋器是如何構成的 , 在實際應用中 , 我們可能很少去構造一個語言的文法。我們還是來簡單的瞭解一下 : 首先要建立一個介面 , 用來描述共同的操作。 public in...原创 2009-10-23 16:40:10 · 87 阅读 · 0 评论 -
設計模式之Visitor
Visitor 定義 作用於某個物件群中各個物件的操作。 它可以使你在不改變這些物件本身的情況下 , 定義作用於這些物件的新操作。 在 Java 中 ,Visitor 模式實際上是分離了 collection 結構中的元素和對這些元素進行操作的行爲。 爲何使用 Visitor? Java 的 Collection(...原创 2009-10-23 16:40:35 · 65 阅读 · 0 评论 -
設計模式之Mediator(仲介者)
Mediator 定義 : 用一個仲介物件來封裝一系列關於物件交互行爲。 爲何使用 Mediator? 各個物件之間的交互操作非常多 ; 每個物件的行爲操作都依賴彼此對方 , 修改一個物件的行爲 , 同時會涉及到修改很多其他物件的行爲 , 如果使用 Mediator 模式 , 可以使各個物件間的耦合鬆散 , 只需關心和 Mediato...原创 2009-10-23 16:41:03 · 70 阅读 · 0 评论 -
設計模式之Strategy(策略)
Strategy 是屬於設計模式中 物件行爲型模式 , 主要是定義一系列的演算法 , 把這些演算法一個個封裝成單獨的類別。 Stratrgy 應用比較廣泛 , 比如 , 公司經營業務變化圖 , 可能有兩種實現方式 , 一個是線條曲線 , 一個是框圖 (bar), 這是兩種演算法 , 可以使用 Strategy 實現。 ...原创 2009-10-23 16:42:37 · 76 阅读 · 0 评论 -
設計模式之State
State 的定義 : 不同的狀態 , 不同的行爲 ; 或者說 , 每個狀態有著相應的行爲。 何時使用 ? State 模式在實際使用中比較多 , 適合 " 狀態的切換 " 。因爲我們經常會使用 If elseif else 進行狀態切換 , 如果針對狀態的這樣判斷切換反復出現 , 我們就要聯想到是否可以採取 ...原创 2009-10-23 16:43:09 · 111 阅读 · 0 评论 -
設計模式之Chain of Responsibility(職責鏈)
Chain of Responsibility 定義 Chain of Responsibility(CoR) 是用一系列類別 (classes) 試圖處理一個請求 request, 這些類別之間是一個鬆散的耦合 , 唯一共同點是在他們之間傳遞 request 。 也就是說,來了一個請求, A 類別先處理,如果沒有處理,就傳遞到 B 類別處理...原创 2009-10-23 16:43:44 · 71 阅读 · 0 评论 -
設計模式之Command
Command 模式是最讓我疑惑的一個模式 , 我在閱讀了很多代碼後 , 才感覺隱約掌握其大概原理 , 我認爲理解設計模式最主要是掌握起原理構造 , 這樣才對自己實際編程有指導作用。 Command 模式實際上不是個很具體 , 規定很多的模式 , 正是這個靈活性 , 讓人有些 confuse 。 Command 定義 不少 Co...原创 2009-10-23 16:44:17 · 90 阅读 · 0 评论 -
設計模式之Observer
Java 深入到一定程度 , 就不可避免的碰到設計模式 (design pattern) 這一概念 , 瞭解設計模式 , 將使自己對 java 中的介面或抽象類別應用有更深的理解。設計模式在 java 的中型系統中應用廣泛 , 遵循一定的編程模式 , 才能使自己的代碼便於理解 , 易於交流 ,Observer( 觀察者 ) 模式是比較常用的一個模式...原创 2009-10-23 16:45:40 · 142 阅读 · 0 评论 -
設計模式之Memento(備忘機制)
Memento 定義 : memento 是一個保存另外一個物件內部狀態拷貝的物件。這樣以後就可以將該物件恢復到原先保存的狀態。 Memento 模式相對也比較好理解 , 我們看下列代碼 : public class Originator { private int number; private File fil...原创 2009-10-23 16:46:31 · 72 阅读 · 0 评论 -
設計模式之Flyweight(享元)
Flyweight 定義 : 避免大量擁有相同內容的小類別的開銷 ( 如耗費記憶體 ), 使大家共用一個類別 ( 元類別 ) 。 爲什麽使用 ? 面向物件語言的原則就是一切都是物件 , 但是如果真正使用起來 , 有時物件數可能顯得很龐大 , 比如 , 文字處理軟體 , 如果以每個文字都作爲一個物件 , 幾千個字...原创 2009-10-23 16:46:56 · 64 阅读 · 0 评论 -
一句话常用设计模式
Iterator——迭代器 Adapter(适配器)————换个包装再度利用 ◎ 万事交给子类: 1、Template Method(模板方法)————实际处理就交给子类 2、Factory Method(工厂方法)————建立对象实例交给子类 ◎建立对象实例 1、Singleton(单件)————唯一的对象实例 2、Prototype(原型)————复制建立对象实例 3、B...原创 2009-08-14 09:18:15 · 117 阅读 · 0 评论