原创 經典算法之漢諾塔求解問題

法國數學家愛德華·盧卡斯曾編寫過一個印度的古老傳說:在世界中心貝拿勒斯(在印度北部)的聖廟裏,一塊黃銅板上插着三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑

原创 開放-封閉原則

開放-封閉原則的定義是——程序的實體對象(模塊、類、函數等)應該可以進行擴展,但不應該可以修改。 開放-封閉原則具有兩個特徵: 1.對於擴展是開放的; 2.對於修改是閉合的。 開放-封閉原則是面向對象開發中所有設計原則的核心。 當經過實踐

原创 依賴倒轉原則

依賴倒轉原則的定義——程序的高層模塊不應依賴於底層模塊,但兩者都應依賴於抽象;抽象不應該依賴於具體細節,而細節應該依賴於抽象。也就是說,面向對象編程應該針對接口編程而不是針對實現編程。 在開發中使用依賴倒轉原則需要遵循以下規範: 每個類

原创 自定義實現棧結構

棧是限制僅在表的一端進行插入和刪除運算的線性表 (1)通常稱插入、刪除這一端爲棧頂,另一端稱棧底; (2)當表中沒有元素時稱空棧; (3)棧爲先進後出(First In Last out)的線性表,簡稱FILO表(也作後進先出,LIFO)

原创 數組的簡單排序(冒泡排序,簡單選擇排序,插入排序)

數組作爲應用最爲廣泛的一種數據結構,對數組實現簡單排序的思想是每一個開發者的基本功。雖然實際的業務開發中用的很少,但是作爲開發者,我們更看重的是其中所體現的一種思想。 現設定一個數組 num int[] num = new int[] {

原创 SFDC之trigger那些事兒

初學Salesforce 的Apex開發,trigger可以說的開發者的基本功了。 trigger的定義模式如下: trigger TriggerName on ObjectName (trigger_events) { code_

原创 CSS盒子模型初解

我們如果以面向對象的角度去考慮CSS提供的盒子模型,可以建立一個BOX對象進行表示: public class Box{ // 外邊距:控制與父級元素的距離 public Margin margin; // 邊框:控制邊框的樣式

原创 設計模式之單例模式

GOF對單例模式的定義:保證類僅有一個實例,並提供一個訪問它的全局訪問點。 單例模式的的基本代碼比較簡單 /** * * @author ricardo * @Time 下午10:40:11 * @Function:定義單例模式

原创 經典算法系列之不死神兔

Fibonacci爲1200年代的歐洲數學家,在他的着作中曾經提到:「若有一隻免子每個月生一隻小免子,一個月後小免子也開始生產。起初只有一隻免子,一個月後就有兩隻免子,二個月後有三隻免子,三個月後有五隻免子(小免子投入生產)......。

原创 設計模式之抽象工廠模式

小青的麪包店開張了一段時間後,生意穩中有升,但是遠遠沒達到小青的預期,因爲不是所有人都吃麪包,小青就想幹脆也賣披薩試試,這時候,小青發現,如果按照製作麪包的步驟來重新走一遍,確實滿足了開放-封閉的原則,但是呢,從新建立Factory,投入

原创 Apex學習:一個計劃任務與批處理的Demo

在一些業務場景下,我們需要指定時間,定期執行某段代碼,比如定期清理垃圾,同步數據等。接下來以生日提醒爲例完成一個Demo。 創建一個對象Friend__c,裏面包含字段:日期字段生日birthday__c和公式字段生日提醒時間remain

原创 合成/聚合複用原則

合成/聚合複用原則的定義——儘量不要使用類繼承,而儘量使用合成/聚合。 合成/聚合都是關聯關係的特殊種類,聚合表示比較“弱”的擁有關係,具體表現是甲對象中可以包括乙對象,但乙對象不是甲對象的一部分;合成則是一種比較“強”的擁有關係,體現的

原创 設計模式之工廠方法模式

工廠,顧名思義在於對相關產品的批量添加,在開發中指將對象創建交給某個類,使得開發者不需要在意對象的創建。舉個例子,小青我的麪包店即將開業了。 /** * * @author 小青 * @Time 下午12:30:34 * @Fu

原创 單一職責原則

單一職責原則的定義比較簡單——對於一個類,應該只有一個引起它變化的原因。 當我們在進行軟件開發的時候,經常會給已經設計的一個類新增各種各樣的功能,或許是出於需求變更,或許是因爲出於開發量的考量,一個類就在這樣或那樣的原因下變得逐漸臃腫龐大

原创 經典算法之楊輝三角

楊輝三角,是二項式係數在三角形中的一種幾何排列。在歐洲,這個表叫做帕斯卡三角形。 實現方案一:打印出來的三角形呈直角 public static int LINE = 8; public static void main(Stri