設計模式之Decorator

在設計的過程中,經常會遇到IS-A和HAS-A的問題,相應的UML圖也就有很大的區別,一個是繼承,一個是組合。這樣的問題很難給出明確的答案,只能是根據實際的需求,結合項目規模來確定最後的設計原則。當你發覺使用繼承來擴充項物件的功能會帶來一些問題,例如:1)擴充缺乏靈活性2)子類膨脹這個時候,你可以考慮使用組合的辦法,而Decorator是一種很有效組合模式。類繼承是靜態擴充,而Decorator則是動態擴充。先看一下GOF裡面給出的類圖:可以看出來,需要裝飾的對象(ConcreateCompon

設計模式之Singleton

這是一個最簡單的模式,但同時也是最容易被誤用、濫用的模式,怎樣才能用好這個看似簡單的模式呢?     在軟體系統中,經常有一些類,必須保證它們在系統中只存在一個執行個體,才能確保邏輯的正確性以及良好的效率。例如,thread pools,caches,dialog boxes,還有Eclipse裡面的preferencs設定。     下面是一個最簡單的版本:public class Singleton{    private static Singleton uniqueInstance;  

Regex替換器 RegeX 3 發布 (Silverlight版)

繼上一版本RegeX發布以來已有三年多了,此次發布全新設計的RegeX 3供廣大開發人員使用。新版基於Silverlight開發,支援安裝到本地運行,採用類似WindowsPhone7的Metro風格設計。新版本的主打功能有兩點:支援無限層級的複雜多重匹配與替換支援在替換時以$@符號引用經過處理後的組內容這兩個功能主要為瞭解決如下問題:冗長的運算式結構。 在匹配複雜的格式時,使用的運算式不僅冗長,且晦澀如天書,一旦修改時不小心改變了某個符號後患無窮。

我也來談談時間管理方式及工具

前面這位朋友談了一下他的時間管理方式:http://www.cnblogs.com/liushuijinger/archive/2012/04/10/2439862.html他利用常見的日曆功能來規劃時間:我回應說:“對我來說通常這樣的計劃都會被瑣事和拖延心理粉碎~”,一下引起了多位朋友的贊同,看來這個問題很普遍,我覺得確實很少有人能夠堅持按照既定計劃準時完成所有事。造成計劃失敗的主要元兇其實就是如我所說的“瑣事”和“拖延心裡”,那麼針對這兩項我分別使用兩種工具來對應。 OmniFocus它號稱

Windriver的項目類型

1. DKMUse Downloadable Kernel Module projects to manage and build modules that willexist in the kernel space.Kernel-mode development is the traditional VxWorks method of development; allthe tasks you spawn run in an unprotected environment, and all

Shared-memory object —VxMP

VxMP is a VxWorks component that provides shared-memory objects dedicatedto high-speed synchronization and communication between tasks running inseparate instances of VxWorks.=================================啥叫"separate instances of

Vxworks增加system call

Vxworks中增加system call的虛擬碼.比如使用者層可以擷取kernel中的time tick.#include <syscall.h>#include <syscallLib.h>unsigned short gettimdsp(void);SYSCALL_RTN_TBL_ENTRY msGetTbl[] ={ {(FUNCPTR) gettimdsp, 1, "gettimdsp", 0}};unsigned short gettimdsp(void){

libgdx的tmx地圖處理工具gdx-tiled-preprocessor.jar(TiledMapPacker)修正版

最近想做個Android的遊戲,用到libgdx,現在研究地圖這塊,製作好地圖tmx檔案後需要處理後libgdx才能載入,需要用到TiledMapPacker工具,該工具被放在gdx-tiled-preprocessor.jar裡,這破玩意可愁死我了,一路嘗試下來各種各種報錯神馬的諸如:Failed to load Main-Class manifest attribute Exception in thread "main"

RTP memory in Vxworks

cmd進入Command interpreterc進入C interpreter以下是用cmd命令,列印出rtp memory的情況:有一點關於shared data比較奇怪,我open的時候大小明明設定的是0x9900300,這裡顯示的是0x9901000.原因應該是和WindRiver的庫函數有關.[vxWorks *]# rtp meminfo -l -m 0x5a02010Memory Information for 0x5a02010 RTP (name =

Symmetric multiprocessing (SMP)

Symmetric multiprocessing (SMP) is a variant of multiprocessing technology inwhich one instance of an operating system controls all processors, and in whichmemory is

怪異的grep結果

原意是發現檔案中IP地址為1.1.1.1的行(不需顯示1.1.1.191這樣的).但是寫錯了,忘記"."是用於匹配任一字元的.但卻發現有幾條grep結果很奇怪.根據GNU Grep的manual "" Match the empty string at the end of word所以當時我就寫成了grep "" 結果如下:ksim@MxGms3:~> echo "1.1.1.1 games1"|grep ""1.1.1.1 games1ksim@MxGms3:~> echo

iPad最值得期待的切實改進構想

螢幕解析度提高它用起來就像一本雜誌,它看起來也當如此。這是在iPad2發布前就被民眾廣為呼喚的改進,當下種種跡象表明高清螢幕已經不遠了,很可能就在iPad3上實現。   偏振光或裸眼3D顯示器及雙鏡頭想象一下在iPad上體驗立體照片、視頻、電影、雜誌、教科書、遊戲、地圖導航、視訊通話會是多麼激動人心吧。LG的裸眼3D手機和偏振光3D顯示器已經很貼近市場了,銷售成績也不差。

為什麼選擇SMP而不是AMP

論壇上有問我們當時為何選擇SMP而不是AMP. 不知道該如何回答,SMP和AMP的不同,從文檔上有瞭解,但是項目為何選擇SMP而不是AMP,卻並不知道.自從我進入這個項目,似乎已經確定了SMP mode. 今天特地去查看了一下以前system文檔,文檔中原因歸結為以下幾點: 1. 因為AMP的核與核之間是完全獨立的, 但是外部的resource並不太好分割,這樣的話,不能簡單的換板子就行,需要改硬體的架構. 2.

無邊框革命——平板電腦發展的必行之路

在iPad初次亮相時,很多人都表示無法接受其寬厚的邊框設計,人們的直覺感到這樣設計是有問題的,但事實上為了提供合適的輔助握持功能,當時蘋果必須將其設計為這樣。現今,人們已經充分接受並習慣了iPad這種邊框設計,眾多效仿者採用的設計方案也與蘋果雷同,甚至還因此惹上了不少官司。但這些並不代表iPad的邊框設計就是完美的了,它還有很大改進餘地。我們通過計算可以得知iPad的邊框地區的總面積約佔整個前面板總面積的1/3,這是非常大的浪費。iPad的螢幕對角線長度約為10英寸,而它前面板對角線長度約為12

詐欺遊戯-少數決,你如何立於不敗之地?

 詐欺遊戯,一部很值得程式員看的日劇。你有沒有看到過一部電視劇,很大一部分都是在講演算法的?你有沒有看到過一部電視劇,它告訴你怎麼利用人性弱點進行欺詐的?你有沒有看到過一部電視劇,你會只在意男主角卻不會在意女主角的?如果沒有,那這部電視劇絕對值得你看。好了,回到標題:詐欺遊戯-少數決,你如何立於不敗之地?這是這部電視劇裡面的第二輪遊戲,背景是這樣的:22個人從第一輪遊戲勝出,進入第二輪遊戲,這一輪每個玩家的賭注是一億日圓。而這一輪的遊戲規則是,先從所有人裡面隨機抽取一個人,讓他說一個問題,每個人

項目為什麼會失敗?

從畢業到現在,已經兩年半了,大大小小的項目也做了八九個了,最大的一個項目規模是大約170人月,耗時半年,最小的項目也就是三四個人,做了一個月。幸運的是,從來還沒有做過失敗的項目,於是,我就想當然地認為:怎麼可能會有失敗的項目呢?究竟怎麼樣的項目才叫失敗呢?項目群組成員的辛苦加班,算不算項目失敗的一種呢?我這裡暫且認為無法交付成果物,或者是交付的成果物無法滿足客戶需求。我曾經旁觀(沒有參與其中)過一個項目,這個項目可以說是完全失敗了。先說一下最終的結果:代碼量:用戶端、伺服器端、資料庫PL/SQL

一點兒很基礎但是很容易搞錯的小地方

首先聲明一下,這一篇是我前兩天看完某位(忘記了是誰了)的一篇Blog後有感而寫的,如果那位大哥需要我加上引用聲明的話請聯絡我。這裡呢,沒有什麼高深的東西,只是一些很基礎的,但是你可不一定都知道噢。1)C#裡面的方法如果沒有加任何的修飾語,那麼它到底是protected還是private的呢?可能是大家都是學貫Java和C#的了,因此會很容易搞混這兩者在一些細微地方的區別。在Java裡面是protected的,但是在C#裡面,它卻是private的。看下面的代碼: 1    class Paren

切忌:浮沙之上築高台

很久之前見過一個面試題,就是看一段代碼並且發現裡面的問題,那段代碼是這樣的:public String XXXXXX(String input){    StringBuilder sb = new StringBuilder(input);    // 這裡是一堆很複雜的操作sb的語句    return

推薦一款開源IDE——SharpDevelop

你在開發.Net程式的時候,是否最大限度利用了VS2005或VS2008的功能呢?如果沒有,或者說,你忍受不了它們對資源的消耗,或者說,你不願意花錢用正版,那麼我向你推薦一款開源的IDE——SharpDevelop。先來一張:這個IDE運行起來只佔50兆記憶體,比起Eclipse的100兆還輕便。看看官方給出的它的一些特性:Forms designer for C#, VB.NET and BooCode completion for C#, VB.NET and Boo (including

化靜為動

有哲學基礎的都知道,運動是絕對的,靜止是相對的。靜態語言既然是客觀存在,那麼他必然遵守這個道。但是如何化靜為動呢?還好,我們有兩大法寶:多態,反射,利用這兩個法寶,就可以實現對象的運行期邦定。關於怎樣利用反射實現動態載入Bean的文章、代碼那是相當多了,我就不再舉例了。如果想深入瞭解的話,可以參考Spring的做法。 關於如何利用多態和介面實現運行時綁定的文章網上也是一找一堆的,也就不多說了。化靜為動,目前所知道的最多也只能是延遲綁定,動態載入,實現對象間的弱耦合。 其實利用反射這種做法有待商榷

總頁數: 61357 1 .... 7078 7079 7080 7081 7082 .... 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.