1. 程式人生 > >12種常見的設計模式

12種常見的設計模式

1.策略模式(Strategy): 定義了演算法家族, 分別封裝起來, 讓它們之間可以互相替換.
比如Collections.sort(List list, Comparator c); 可以通過實現多個Comparator介面來達到多種排序的目的.

2.裝飾著模式(Decorator): 動態的給一個物件新增一些額外的職責.
比如java.io包. BufferedInputStream封裝了FileInputStream, 它們都實現了InputStream介面, 但前者實現了readLine方法.

3.代理模式(Proxy): 為其他物件提供一種代理以控制對這個物件的訪問.
比如在使用者登入時, 真正的登入類和代理登入類都實現了Login介面, 不同的是Proxy類的方法中增加了使用者是否合法的判斷, 只有合法時才去呼叫真正登入類的login方法. 使用者訪問的其實是Proxy的login方法.

4.工廠模式(Factory): 定義一個用以建立物件的介面, 讓子類決定例項化哪個類.
當遇到需要根據某個前提條件建立不同的類實現時, 會實用工廠模式.

5.模板模式(Template): 定義一個操作中的演算法骨架, 而將一些步驟延遲到子類中.
比如HibernateTemplate, 在Template中已經定義了Connection開關的實現, 使用者只需要在子類中根據不同的業務寫不同的sql.

6.外觀模式(Facade): 為子系統中的一組介面提供一個一致的介面.
一直在用, 比如DBUtil, 將所有資料庫物件封裝了, 只留了DBUtil.getDBUtil()這個介面.

7.建造者模式(Builder): 將一個複雜物件的構建與它的表示分離.

8.觀察者模式(Observer): 定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某一主題物件,在它的狀態發生變化時,會通知所有的觀察者.
比如ServletContextListener, 在applcation啟動時, 會通知所有這個介面的實現類.

9.抽象工廠模式(Abstract Factory): 提供一個建立一系列相關或相互依賴物件的介面, 而無需指定它們具體的類.

10.介面卡模式(Adapter): 將一個類的介面轉換成客戶希望的另一個介面.

11.單例模式(Singleton): 保證一個類僅有一個例項,並提供一個訪問它的全域性控制點.
比如在載入配置檔案時, 可使用該模式.

12.命令模式(Command): 將一個請求封裝成為一個物件, 使可以用不同的請求對客戶進行引數化.
比如Struts的MVC結構, 其實就是個Command模式.

相關推薦

常見設計模式

his 日誌 核心 rate 相同 產生 TP 價值 應該 設計模式 一書將設計模式引入軟件社區,該書的作者是 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides Design(俗稱 “四人幫”)。所介紹的設計模式

cocos2dx的幾常見設計模式

第二個問題是為什麼要這麼用,對於c++程式設計師來說初始化工作不都是在建構函式中完成的嗎,cocos中為何要這麼做呢?這裡引述一下王哲的話:“其實我們設計二段構造時首先考慮其優勢而非相容cocos2d-iphone. 初始化時會遇到圖片資源不存在等異常,而C++建構函式無返回值,只能用try-catch來處理

常見設計模式在專案中的應用<Singleton、Factory、Strategy>

一、前言   前幾天閱讀一框架文件,裡面有一段這樣的描述 “從物件工廠中………” ,促使寫下本文。儘管一些模式簡單和簡單,但是常用、有用。   結合最近一個專案場景回顧一下里面應用到的一些模式<Singleton、Factory、Strategy>。   示例程式碼:https://github.

12常見設計模式

1.策略模式(Strategy): 定義了演算法家族, 分別封裝起來, 讓它們之間可以互相替換. 比如Collections.sort(List list, Comparator c); 可以通過實現多個Comparator介面來達到多種排序的目的. 2.

常見的6JavaScript設計模式

工廠模式: function Animal(opts){ var obj = new Object(); obj.name = opts.name; obj.color = opts.color; ob

常見的幾JavaScript設計模式

設計模式是在軟體開發中,經過驗證的,用於解決在特定環境下,重複出現的特定的問題的解決方案。在編寫JS程式碼的過程中,運用一定的設計模式可以讓我們的程式碼更加優雅、靈活。每個設計模式的構成如下:1、模式名稱:模式的一個好記的名字2、環境和問題:描述在什麼環境下,出現什麼特定的問

23基本設計模式-概述

簡潔 內部類 用戶 沖突 交互 ola 建造者模式 概念 復雜 1、為什麽使用?設計模式,能夠使代碼更簡潔、更優美、更效率、擴展性型更強。 2、設計模式的原則:開閉原則(對拓展開放,對改動關閉)(抽象化是關鍵) --單一職

常見設計模式的思考1

AC type 異步 定義 proxy 代理模式 整理 請求 靜態工廠 1- 簡單工廠模式: 定義:Simple Factory,又叫靜態工廠方法,由一個工廠對象決定創建某一種產品對象的實例。主要用來創建同一類對象。 常用場景: 通過配置生成實例, 比如將請求參數(typ

JavaScript常見設計模式梳理

rip 實例 scrip nbsp get aid spider pan 執行 單例模式 單例模式,顧名思義就是保證每個類都只有一個實例對象。 其實現思路很簡單,先判斷實例是否存在,如果不存在則創建新的實例返回,如果存在則直接返回該實例。 策略模式 策略模式可以理解為:

23JavaScript設計模式

幫助 情況下 包裝 叠代器 生命周期 重新 哪些 屏幕 .com 原文鏈接:https://boostlog.io/@sonuton/23-javascript-design-patterns-5adb006847018500491f3f7f 轉自: https://mp.

4常見IO模式詳解

IO模式 本文討論的背景是Linux環境下的網路IO。 對於一次IO訪問,資料會先被拷貝到作業系統核心的緩衝區中,然後再從作業系統核心的緩衝區拷貝到應用程式的地址空間。 所以,當發生一個IO操作時,它會經歷兩個階段:1. 等待資料準備2. 將資料從核心拷貝到程序中 對於兩個階段,li

Java基礎:23Java設計模式

設計模式主要分三個型別:建立型、結構型和行為型。 其中建立型有: 一、Singleton,單例模式:保證一個類只有一個例項,並提供一個訪問它的全域性訪問點 二、Abstract Factory,抽象工廠:提供一個建立一系列相關或相互依賴物件的介面,而無須指定它們的具體類。 三、Fac

原型鏈與繼承(一):六常見繼承模式

一、原型鏈繼承: function SuperType(){ this.colors = ["red", "blue", "green"]; } SuperType.prototype.Fun = function(){ }; function SubType(){ } //

安卓常見設計模式整理

監聽器模式 監聽器模式定義: 事件源經過事件的封裝傳給監聽器,當事件源觸發事件後,監聽器接收到事件物件可以回撥事件的方法 監聽器角色: 事件源:具體的事件源,註冊特定的監聽,才可以對事件進行響應。 事件物件:封裝了事件源物件以及與事件相

前端常見設計模式彙總

設計模式應該是個老生常談的話題,不少寫設計模式的書,都是基於Java寫的,真正基於JavaScript寫的不多,這裡整理了我們前端常見的設計模式,供大家參考哈~ JS設計模式一:工廠模式 jS設計模式二:單例模式 JS設計模式三:模組模式 JS設計模式四:代理模式 JS設計模式五:職責

常見設計模式總結(一)單例&觀察者&裝飾者

目錄單例模式觀察者模式裝飾者模式 單例模式 簡單點說,就是一個應用程式中,某個類的例項物件只有一個,你沒有辦法去new,因為構造器是被private修飾的,一般通過getInstance()的方法來獲取它們的例項。getInstance()的返回值是一個物件的引

設計模式入門(一)——常見設計模式概述

1.1 設計模式的分類總體來說設計模式分為三大類: 建立型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。 結構型模式,共七種:介面卡模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。 行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式

面向物件五大設計原則以及常見設計模式總結

儘管本人已經從事OOP程式設計好幾年,但對於OOP程式設計的很多精髓依舊瞭解不深。加之最近專案不緊,特抽出時間總結一些面向物件設計原則以及設計模式的相關內容,加深自己的理解同時也希望可以幫到其他人。 note:程式設計是一門技術更是一門藝術,藝術來源於生活又高於生活。下面介紹的很多東西很多都

框架建立中常見設計模式-模板方法模式

模板方法模式定義:在一個方法中定義一個演算法的骨架,將一些處理的步驟延遲到子類去做處理,可以使在子類不改變演算法結構的情況下, 重新定義演算法的步驟。 設計院原則 好萊塢原則:別調用我們,我們會呼叫你。 先來看下簡單的程式碼實現: 定義一個父類:果汁流程製作 1 package c

常見設計模式的解析和實現(C++)之十七-State模式

作用:允許一個物件在其內部狀態改變時改變它的行為.UML結構圖:解析:State模式主要解決的是在開發中時常遇到的根據不同的狀態需要進行不同的處理操作的問題,而這樣的問題,大部分人是採用switch-case語句進行處理的,這樣會造成一個問題:分支過多,而且如果加入一個新的狀態就需要對原來的程式碼進行