設計模式(19)-行為型-觀察者模式(Observer)

概述 定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並被自動更新。    最容易讓人聯絡到的就是GUI使用者介面當中資料和視圖的對應關係,當資料發生變化時,它對應的所有的視圖都自動更新。適用性 1.當一個抽象模型有兩個方面,其中一個方面依賴於另一方面。 將這二者封裝在獨立的對象中以使它們可以各自獨立地改變和複用。 2.當對一個對象的改變需要同時改變其它對象,而不知道具體有多少對象有待改變。

設計模式(16)-行為型-迭代器模式(Iterator)

概述 給定一個語言,定義它的文法的一種表示,並定義一個解譯器,這個解譯器使用該表示來解釋語言中的句子。適用性 1.訪問一個彙總對象的內容而無需暴露它的內部表示。 2.支援對彙總對象的多種遍曆。 3.為遍曆不同的彙總結構提供一個統一的介面(即,支援多態迭代)。參與者 1.Iterator 迭代器定義訪問和遍曆元素的介面。 2.ConcreteIterator 具體迭代器實現迭代器介面。 對該彙總遍曆時跟蹤當前位置。

設計模式(20)-行為型-狀態模式(State)

概述 定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並被自動更新。適用性 1.一個對象的行為取決於它的狀態,並且它必須在運行時刻根據狀態改變它的行為。 2.一個操作中含有龐大的多分支的條件陳述式,且這些分支依賴於該對象的狀態。 這個狀態通常用一個或多個枚舉常量表示。 通常,有多個操作包含這一相同的條件結構。 State模式將每一個條件分支放入一個獨立的類中。

設計模式(17)-行為型-中介者模式(Mediator)

概述 用一個中介對象來封裝一系列的對象互動。中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。適用性 1.一組對象以定義良好但是複雜的方式進行通訊。產生的相互依賴關係結構混亂且難以理解。 2.一個對象引用其他很多個物件並且直接與這些對象通訊,導致難以複用該對象。 3.想定製一個分布在多個類中的行為,而又不想產生太多的子類。參與者 1.Mediator 中介者定義一個介面用於與各同事(Colleague)對象通訊。

設計模式(21)-行為型-策略模式(Strategy)

概述 定義一系列的演算法,把它們一個個封裝起來,並且使它們可相互替換。本模式使得演算法可獨立於使用它的客戶而變化。 適用性 1.許多相關的類僅僅是行為有異。“策略”提供了一種用多個行為中的一個行為來配置一個類的方法。 2.需要使用一個演算法的不同變體。 3.演算法使用客戶不應該知道的資料。可使用原則模式以避免暴露複雜的、與演算法相關的資料結構。 4.一個類定義了多種行為,並且這些行為在這個類的操作中以多個條件陳述式的形式出現。

設計模式(18)-行為型-備忘錄模式(Memento)

概述 在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外儲存這個狀態。這樣以後就可將該對象恢複到原先儲存的狀態。適用性 1.必須儲存一個對象在某一個時刻的(部分)狀態,這樣以後需要時它才能恢複到先前的狀態。 2.如果一個用介面來讓其它對象直接得到這些狀態,將會暴露對象的實現細節並破壞對象的封裝性。參與者 1.Memento 備忘錄儲存原發器對象的內部狀態。 2.Originator 原發器建立一個備忘錄,用以記錄當前時刻它的內部狀態。

設計模式(22)-行為型-模板方法模式(Template Method)

概述 定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。 TemplateMethod使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。適用性 1.一次性實現一個演算法的不變的部分,並將可變的行為留給子類來實現。 2.各子類中公用的行為應被提取出來並集中到一個公用父類中以避免代碼重複。 首先識別現有代碼中的不同之處,並且將不同之處分離為新的操作。 最後,用一個調用這些新的操作的模板方法來替換這些不同的代碼。

DrawPrimitiveUP 與 DrawPrimitive

在D3D中,一共有三種基本圖元,分別是點、線和三角形。點是最簡單的圖元,由它可以構成一種叫點列(point list)的圖元類型。線是由兩個不重合的點構成的,一些不相連的線組成的集合就叫線列(line list),而一些首尾相連但不形成環路的線的集合就叫線帶(line strips)。同理,單獨的三角形集合就叫三角形列(triangle list),類似於線帶的三角形集合就叫三角形連環(triangle

ejb2.1中ejbQL的缺點,權且作為筆記

1. Object()操作符感覺就是Sun公司創造出來的幌子,什麼意義也沒有。只是給ejb的實現方確定什麼時候那個abstract schema類型成為傳回值。對於QL查詢本身而言,確實沒有什麼意義。Sun公司的解釋好像是下一代SQL規範裡可能包含這個操作符。呵呵。鬼知道SQL2003或者更新版本裡是否有這個操作符,反正我是沒有看到。2. 缺乏對Date類型的操作預設對java.util.Date原生類型的支援。3. 支援的SQL函數太少了連CAST(), DOW(), MONTH(),

程式實現啟動和停止嵌入式Tomcat Web伺服器

本文系本人原創性實驗工作,如若轉載,請尊重個人勞動,註明出處。這陣子,由於實驗的需要,需要通過程式啟動和停止Tomcat Web Server。很早以前就知道有Embedded tomcat。如果不使用嵌入式伺服器,直接調用命令列startup.bat, shutdown.bat,將輸入輸出重新導向,是比較容易的,但是這樣的tomcat比較臃腫,也不好看。網上也有一些執行個體,但只是告訴我們啟動tomcat,卻沒有合適的停止tomcat的樣本。於是就嘗試寫一個TomcatServer.java,

D3D來實現2D的效果 的方法

很多D3D的初學者最感到困惑的問題是如何用D3D來實現2D的效果,因為DirectDraw已經不存在了(當然你還是可以用以前的版本的,但是可能不法利用一些最近的硬體加速)在這裡我給大家介紹幾種方法可以實現用D3D編寫2D遊戲  方法一:使用D3DX的介面ID3DXSprite,void DrawSprite_2D(         int dx,//視窗中的X座標        int dy,//視窗中的Y座標        int sx,//tex紋理中的X座標        int sy,/

iPhone遊戲中既播放背景音樂又播放特效聲音的辦

有時候在 iPhone 遊戲中,既要播放背景音樂,同時又要播放比如槍的開火音效。此時您可以試試以下方法    NSString *musicFilePath = [[NSBundle mainBundle] pathForResource:fileName ofType:@"wav"];       //建立音樂檔案路徑    NSURL *musicURL = [[NSURL alloc] initFileURLWithPath:musicFilePath];     

Sybase ASE15.x中啟用跟蹤SQL語句的方法

當說到跟蹤SQL語句,有人可能會問起這個功能,也許有人會想到用審計功能,為了跟蹤SQL語句,去啟用審計功能,會成為一種浪費,或許使用者只是想跟蹤某一個串連的所有SQL語句呢?請看簡單的樣本:1> set tracefile "d:/abc.txt"2> go1> set show_sqltext on2> set statistics io on3> go1> select * from t1232> go id col2 ------

PostgreSQL9.2中的json儲存表示和檢索

其解決方案就是使用hstore類型,使用它,先得建立對應的擴充。下面只列出簡單的使用樣本:iihero=# create extension hstore;CREATE EXTENSIONiihero=#iihero=# select 'a=>1,b=>2'::hstore;   hstore--------------------  "a"=>"1", "b"=>"2"(1 row)iihero=# insert into tjson values(1,

設計模式(23)-行為型-訪問者模式(Visitor)

概述 表示一個作用於某對象結構中的各元素的操作。 它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。適用性 1.一個對象結構包含很多類對象,它們有不同的介面,而你想對這些對象實施一些依賴於其具體類的操作。 2.需要對一個對象結構中的對象進行很多不同的並且不相關的操作,而你想避免讓這些操作“汙染”這些對象的類。 Visitor使得你可以將相關的操作集中起來定義在一個類中。

項目研發管理實施經驗談(1)

本文為iihero@CSDN原創,如若轉載,請註明原始出處,謝謝。提起專案管理,可能各人都有自己的一套實施經驗和原則,適合自己的才是最好的。小中型團隊和大型團隊的管理方法肯定有很大的不同,就如同軟體本身,當規模比較小時,就相對容易控制,可是達到一定規模以後,如果沒有有效方法,就很難管理和控制。先從小型團隊開始吧。小型團隊,一般不超過8人。在這個範圍以內,人員之間的溝通代價相對還是比較正常的。作為PM而言,要明確如下幾點:1. 整個項目的最終目標是什麼     沒有明確和精確的目標,往往做到最後,

測試程式的效率

#include <stdio.h>#include <stdlib.h>#include <time.h>void main( void ){ time_t start, finish; long loop; double result, elapsed_time; printf( "Multiplying 2 floating point numbers 10 million times.../n" ); time( &

VisualGC/jvmstat監控jvm的heap消耗

關於jstat, 可以參考:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html下載一份jvmstat3.0,網上可以google到。1) 在C:\下建立一個policy檔案:jstatd.all.policy     grant codebase"file:${java.home}/../lib/tools.jar" { permissionjava.security.AllPermission; }; 2)運行(

Session與Cookie的對應關係

        為什麼會有cookie呢,大家都知道,http是無狀態的協議,客戶每次讀取web頁面時,伺服器都開啟新的會話,而且伺服器也不會自動維護客戶的上下文資訊,那麼要怎麼才能實現網上商店中的購物車呢,session就是一種儲存上下文資訊的機制,它是針對每一個使用者的,變數的值儲存在伺服器端,通過 SessionID來區分不同的客戶,session是以cookie或URL重寫為基礎的,預設使用cookie來實現,系統會創造一個名為

減小Sybase ASA資料庫的資料和交易記錄檔大小及分離的方法

ASA資料庫,經過一段時間使用以後,資料檔案和交易記錄檔都會膨脹,如果不進行整理,將佔用很大的磁碟空間,對系統來說,是一種負擔。我曾經遇到過一種情況,短短一段時間,資料檔案和記錄檔都漲到55G左右。碰到這種情況,可以先把ASA的資料庫服務關掉,然後使用dbunload命令進行卸載和重載,建立一個新庫,然後刪除舊庫。dbunload.exe -c "uid=dba;pwd=sql;dbf=C:\Sybase\UnwiredPlatform\Data\CDB\default.db" -an

總頁數: 61357 1 .... 14807 14808 14809 14810 14811 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.