1.情境類比簡單的報價管理系統:對於普通使用者和新使用者報全價對於老客戶統一折扣5%對於大客戶統一折扣10%2.不用模式的解決方案package demo16.strategy.example2;/** * 價格管理,主要完成計算向客戶所報價格的功能 */public class Price {/** * 報價,對不同類型的,計算不同的價格 * @param goodsPrice 商品銷售原價 * @param customerType 客戶類型 * @return
定義:一個軟體實體如類、模組和函數應該對擴充開放,對修改關閉。問題由來:在軟體的生命週期內,因為變化、升級和維護等原因需要對軟體原有代碼進行修改時,可能會給舊代碼中引入錯誤,也可能會使我們不得不對整個功能進行重構,並且需要原有代碼經過重新測試。解決方案:當軟體需要變化時,盡量通過擴充軟體實體的行為來實現變化,而不是通過修改已有的代碼來實現變化。
NATS是CloudFoundry內部的神經系統,是一款基於EventMachine、使用“發布--訂閱”機制的輕量級訊息中介軟體。基於EM的特點使得NATS在Ruby環境下有著處理高並發請求的能力。NATS對訊息本身不做持久化,所以匹配和訂閱的過程比較簡潔高效。目前,NATS server是CF中一處需要解決的單點依賴。NATS主要的依賴gem包包括:eventmachine, json_pure, daemons, thinNATS的代碼結構比較簡單:源碼地址:
1.情境類比考慮一個線上投票的應用,分為四種情況正常投票正常投票以後還繼續重複投票使用者惡意投票黑名單使用者2.不用模式的解決方案package demo17.state.example1;import java.util.*;/** * 投票管理 */public class VoteManager {/** * 記錄使用者投票的結果,Map<String,String>對應Map<使用者名稱稱,投票的選項> */private
為什麼我們需要EventMachine?我們通常說的Ruby解譯器裡的Ruby線程是Green Thread:即程式裡面的線程不會真正映射到作業系統的線程,而是由語言運行平台自身來調度,並且這種線程的調度不是並行的。關於Ruby的並發問題這裡有一個權威的解釋:http://www.igvita.com/2008/11/13/concurrency-is-a-myth-in-ruby這篇文章提到造成這種情況的原因主要是由於Ruby解譯器和VM中GIL(Global Interpreter
1.講解備忘錄模式備忘錄模式(Memento Pattern)又叫做快照模式(Snapshot
1.講解享元模式(結構型)1.1享元模式定義運用共用技術有效地支援大量細粒度對象.享元:把內部狀態共用出來1.2享元模式要點重點在於分離變與不變。把一個對象的狀態分為內部狀態和外部狀態,內部狀態不變,外部狀態可變。內部狀態就是在對象裡通過內部方法管理,而外部資訊可以在通過外部刪除或者儲存。1.3享元模式的結構圖以及說明 享元模式所涉及的角色有抽象享元角色、具體(單純)享元角色、複合享元角色、享員工廠角色,以及用戶端角色等。抽象享元角色(Flyweight):此角色是所有的具體享元類的超類,為這些
XXXXX nsthread autoreleased with no pool in place - just leaking這是一個會經常發生的警告提示。當調用[NSThread detachNewThreadSelector:@selector(XXX) toTarget:self
1.講解解譯器模式1.1解譯器模式定義給定一個語言,定義它的文法的一種表示,並定義一個解譯器,這個解譯器使用該表示來解釋語言中的句子。1.2解譯器模式要點解析器:把描述用戶端調用要求的運算式,經過解析,形成一個抽象文法樹的程式。解譯器:解釋文法抽象樹一般一個解譯器處理一個文法規則1.3解譯器模式的結構圖以及說明 抽象解譯器:聲明一個所有具體運算式都要實現的抽象介面(或者抽象類別),介面中主要是一個interpret()方法,稱為解釋操作。具體解釋任務由它的各個實作類別來完成,具體的解譯器分別由終
Google開放了一套天氣預報API,還是很好用的。使用郵遞區號(美國)http://www.google.com/ig/api?hl=zh-cn&weather=94043(加州山景城)使用經度緯度座標http://www.google.com/ig/api?hl=zh-cn&weather=,,,30670000,104019996(成都)用於android不對。http://www.google.com/ig/api?&weather=,,,30670000,104
今天做項目的時候遇到一個問題,就是我們在AppDelegate中載入了兩個view視圖,都包含UITableView,一個當前可見(AView),一個當前不可見(BView)。當在可見(AView)的View中選擇Cell的時候會同步到BView中。 恩……我們在模擬器上偵錯工具的時候一切正常,但是使用版本為ios 4.x & 5.x & 6.x的iPhone
1.裝飾模式講解1.1定義動態給一個對象添加一些額外的職責。就增加功能來說,裝飾模式比產生子類更加靈活。1.2裝飾模式要點透明的給一個對象增加功能,換句話說就是要給一個對象增加功能,但是不能讓這個對象知道,也就是不能去改動這個對象。物件導向設計的一個基本規則就是:盡量使用對象組合,而不是使用對象繼承。裝飾者和被裝飾對象有相同的超類型。可以用一個或多個裝飾者封裝一個對象。裝飾者可以在所委託被裝飾者的行為之前或之後,加上自己的行為,以達到特定的目的。對象可以在任何時候被裝飾,所以可以在運行時動態,不
注意,切換方法overridePendingTransition只能在startActivity和finish方法之後調用。第一個參數為第一個Activity離開時的動畫,第二參數為所進入的Activity的動畫效果淡入淡出效果overridePendingTransition(R.anim.fade,
A).
1.職責鏈模式講解1.1職責鏈定義使多個對象都有機會處理請求,從而避免請求的寄件者和接收者之間的耦合關係。將這些對象連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個對象處理它為止。1.2職責鏈模式的要點動態構建流程步驟,這樣隨時都可以重新組合出線的流程。對於要求者而言,並不知道最終的接受者是誰,但是一般情況下,總會有一個對象來處理,稱為隱式接受者。在標準的職責鏈模式中,只有對象處理了該請求,這個請求就到此為止,不會再被傳遞了。1.3職責鏈模式的結構和說明 抽象處理者(Handler)角色:定義出一
搭建一個wordPress作為一個個人部落格本來是特別簡單的事情,但是網上的各種轉載讓初學者舉步維艱,我就本身條件而言,會java
1.橋接模式講解1.1定義將抽象部分和它的實現部分分離,使它們都可以獨立的變化。1.2橋接模式要點橋接:不同的東西之間搭一個橋,讓他們能夠串連起來,可以相互連訊和使用。橋接模式中的橋接是單向的,只能是抽象部分的對象去使用,實現抽象部分的對象。由於類型的固有羅輯,使得類型具有兩個或兩個以上的緯度變化。也就是要求抽象不應依賴於實現細節,實現細節應依賴於抽象。理解橋接模式,重點需要理解如何將抽象化(Abstraction)與實現化(Implementation)脫耦,使得二者可以獨立地變化。 •
今天在項目中為了實現一個可以顯示自訂樣式的x軸label,整了我一個下午,搞死我了。先: 圖中的表格可以左右拖動,不允許上下拖動。而且只允許顯示當前三十天的資料,且今天的標籤顯示白色。設定corePlot可拖動: plotSpace.allowsUserInteraction = YES;設定x顯示的範圍:plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(8 *
1.講解訪問者模式1.1訪問者模式定義表示一個作用於某對象結構中的各元素的操作。它使你可以在不改變各元素類的前提下定義作用於這些元素的新操作。1.2訪問者模式要點訪問者模式把資料結構和作用於結構上的操作解耦合,使得操作集合可相對自由地演化。訪問者模式適用於資料結構相對穩定演算法又易變化的系統。因為訪問者模式使得演算法操作增加變得容易。若系統資料結構對象易於變化,經常有新的資料對象增加進來,則不適合使用訪問者模式。訪問者模式的優點是增加操作很容易,因為增加操作意味著增加新的訪問者。訪問者模式將有關
1. 輕鬆訪問鍵盤快速鍵 按住右Shift 八秒鐘: 啟用和關閉篩選鍵 按左 Alt+左 Shift+PrtScn(或 PrtScn):啟用或關閉高對比 按左 Alt+左 Shift+Num Lock :啟用或關閉滑鼠鍵 按 Shift 五次: 啟用或關閉相黏鍵 按住 Num Lock 五秒鐘:啟用或關閉切換鍵 Windows 徽標鍵 + U : 開啟輕鬆訪問中心2. 常規鍵盤快速鍵 F1 顯示協助 Ctrl+C 複製選擇的項目