C#物件導向設計模式學習筆記 – 開篇

做程式員已經有三年半了,每天都在同一個架構做著相同的事情,對一個開發人員而言,確實是一件可悲的事情。隨著年齡的增長,危機感也越來越強了,再不充電恐怕真的要被淘汰了。我把學習設計模式作為我充電計劃的第一門課程,教材選用的是李建忠前兩年在WebCasts中的《C#物件導向設計模式縱橫談系列課程》。物件導向設計模式與原則 設計模式原則:

C#物件導向設計模式學習筆記(1) – Singleton 單件模式(建立型模式)

Singleton 單件模式保證一個類只有一個執行個體,並提供一個該執行個體的全域訪問點。核心是如何控制使用者使用new對一個類的實力構造器的任意調用。  1、單線程Singleton模式實現代碼Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public class Singleton{//private static Singleton

C#物件導向設計模式學習筆記(2) – Abstract Factory 抽象原廠模式(建立型模式)

提供一個介面,讓該介面負責建立一系列"相關或者相互依賴的對象",無需指定它們具體的類。 在軟體系統中,經常面臨著"一系列相互依賴的對象"的建立工作;同時,由於需求的變化,往往存在更多系列對象的建立工作。 如何應對這種變化?如何繞過常規的對象建立方法(new),提供一種"封裝機制"來避免客戶程式和這種"多系列具體對象建立工作"的緊耦合? 哪裡變化,封裝哪裡。(如果沒有變化,當然不需要額外的封裝)   Abstract Factory 抽象原廠模式  Code highlighting

[轉載]Calling printf from C# – The tale of the hidden __arglist keyword

Browsing the SSCLI can be enlighting from time to time (if not all the time). Take a look at the following function implemented in console.cs:[HostProtection(UI=true)][CLSCompliant(false)] public static void WriteLine(String format, Object arg0,

一道小題:指向二維數組的指標…我的一點理解(int w[2][3],(*pw)[3];pw=w; 則下列錯誤的是 a.*(w[0]+2) b.*(pw+1)[2] c..pw[0][

int w[2][3],(*pw)[3];pw=w;則下列錯誤的是a.*(w[0]+2)b.*(pw+1)[2] 

C/C++招聘的一些感受和經驗

前段時間剛參加了n多公司的C/C++軟體工程師的面試,有國企,外企,私企(moto,飛思卡爾,港灣,中國衛星XXX(這個牛))等等等等。感受感想頗多,近日終於空閑,在此表述一下。     本人基本條件:3年開發經驗,2year+ Windows development experence,1year+ Linux experence. 熟悉C,C++,MFC/SDK/API,MiniGUI...(都是一些基本的了)。前公司並不知名,但在其中做個team leader。 言歸正傳

c++中explicit關鍵字的含義和用法

c++中的explicit關鍵字用來修飾類的建構函式,表明該建構函式是顯式的,既然有"顯式"那麼必然就有"隱式",那麼什麼是顯示而什麼又是隱式的呢?如果c++類的建構函式有一個參數,那麼在編譯的時候就會有一個預設的轉換操作:將該建構函式對應資料類型的資料轉換為該類對象,如下面所示:class MyClass{public:MyClass( int num );}....MyClass obj = 10; //ok,convert int to

C++中的左值和右值

1. 概念 變數和文字常量都有儲存區,並且有相關的類型,區別在於變數是可定址的; 對於每個變數,都有2個值與其相關聯: 1>資料值,儲存在某個記憶體位址中,也稱右值(rvalue),右值是被讀取的值(read value),文字常量和變數都可被用於右值。 2>地址值,即儲存資料值的那塊記憶體位址,也稱左值(lvalue),文字常量不能被用作左值。 2 . 問題 給運算式加上括弧: ++a-- 結果 ++(a--) 這個運算式是非法的,因為前增量操作要求一個可修改的左值,而 "a--"

全排列的演算法與C語言實現

全排列是將一組數按一定順序進行排列,如果這組數有n個,那麼全排列數為n!個。現以{1, 2, 3, 4, 5}為例說明如何編寫全排列的遞迴演算法。1、首先看最後兩個數4, 5。 它們的全排列為4 5和5 4, 即以4開頭的5的全排列和以5開頭的4的全排列。由於一個數的全排列就是其本身,從而得到以上結果。2、再看後三個數3, 4, 5。它們的全排列為3 4 5、3 5 4、 4 3 5、 4 5 3、 5 3 4、 5 4 3

C++ STL map的使用

1、map簡介 map是一類關聯式容器。它的特點是增加和刪除節點對迭代器的影響很小,除了那個動作節點,對其他的節點都沒有什麼影響。對於迭代器來說,可以修改實值,而不能修改key。 2、map的功能 自動建立Key - value的對應。key 和 value可以是任意你需要的類型。根據key值快速尋找記錄,尋找的複雜度基本是Log(N),如果有1000個記錄,最多尋找10次,1,000,000個記錄,最多尋找20次。快速插入Key - Value 記錄。快速刪除記錄根據Key

C語言檔案讀寫命令

C語言把磁碟檔案看成是字元(或位元組)的序列,按照儲存資訊的形式來說,檔案主要是有文字檔和二進位檔案。文字檔由一個個字元組成,每個位元組存放一個ASCII碼制,代表一個字元。二進位檔案把記憶體中的資料按其在記憶體中的儲存形式原樣放入磁碟空間。

如何安全地解放C盤剩餘磁碟空間?

注意, 本文所涉及到的方法和步驟僅供在工作機上使用, 請不要在伺服器上使用, 否則後果自負. 當然, 工作機上使用除了錯後果也還是自負的. 呵呵. 筆者C盤磁碟空間只有44GB. 經常只剩下一兩個G的空間, 多開啟幾個網頁, 解壓點什麼東西, 或者看個dump, C盤空間就不夠了.筆者在Windows基本維護上水平很爛, 一個大學剛畢業的小夥兒幫了我的忙. 除了使用Windows內建的清理磁碟工具(可以清楚IE緩衝等),

C#物件導向設計模式學習筆記(3) – Builder 產生器模式(建立型模式)

在軟體系統中,有時候面臨著“一個複雜物件”的建立工作,其通常由各個部分的子物件用一定的演算法構成:由於需求的變化,這個複雜物件的各個部分經常面臨著劇烈的變化,但是將它們組合在一起的演算法卻相對穩定。如何應對這種變化?如何提供一種“封裝機制”來隔離出“複雜物件的各個部分”的變化,從而保持系統中的“穩定構建演算法”不隨著需求改變而改變?將一個複雜物件的構建與其表示相分離,使得同樣的構建過程可以建立不同的表示。 結構:   協作:  Code highlighting produced by

C#數字進位間與字串類型相互轉換

今天回答了老婆一個C#類型轉換問題,乾脆東抄西湊總結了一下。代碼如下。// 數字二,八,十,十六進位轉字串string strResult;strResult = Convert.ToString(253, 2);// 結果:11111101 strResult = Convert.ToString(253, 8);// 結果:375 strResult = Convert.ToString(253, 10);// 結果:253 strResult = Convert.ToString(253,

C#物件導向設計模式學習筆記(4) – Factory Method Factory 方法模式(建立型模式)

 Factory Method模式解決“單個對象”的需求變化; Abstract Factory模式解決“系列對象”的需求變化;

C#物件導向設計模式學習筆記(5) – Prototype 原型模式(建立型模式)

在軟體系統中,經常面臨著“某些結構複雜的對象”的建立工作;由於需求的變化,這些對象經常面臨著劇烈的變化,但是它們卻擁有比較穩定一致的介面。 如何應對這種變化?如何向“客戶程式(使用這些對象的程式)”隔離出“這些易變對象”,從而使得“依賴這些易變對象的客戶程式”不隨著需求改變而改變? 使用原型執行個體指定建立對象的種類,然後通過拷貝這些原型來建立新的對象。    結構:    Code highlighting produced by Actipro CodeHighlighter

C#物件導向設計模式學習筆記(7) – Bridge 橋接模式(結構型模式)

由於某些類型的固有邏輯,使得它們具有兩個化的維度,乃至多個緯度的變化。 如何應對這種“多維度變化多維度變化”?如何利用面對象技術來使得類型可以輕鬆地沿著兩個乃至多個方向變化,而不引入額外的複雜度? 意圖:將一個事物中多個維度變化分離,使他們都可以獨立的變化。          Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public

C#物件導向設計模式學習筆記(8) – Composite 組合模式(結構型模式)

在某些情況下,客戶代碼過多地依賴於對象容器複雜的內部實現結構,對象容器內部實現結構(而非抽象介面)的變化將引起客戶代碼的頻繁變化,帶來了代碼的維護性、擴充性等弊端。 如何將“客戶代碼與複雜的對象容器結構”解耦?讓對象容器自己來實現自身的複雜結構,從而使得客戶代碼就像處理簡單對象一樣來處理複雜的對象容器? 意圖: 將對象組合成樹形結構以表示“部分-整體”的階層。Composite使得使用者對單個對象和組合對象的使用具有一致性。  Code highlighting produced by

C#物件導向設計模式學習筆記(9) – Decorator 裝飾模式(結構型模式)

在某些情況下我們可能會“過度地使用繼承來擴充項物件的功能”,由於繼承為類型引入的靜態(編譯時間)特質,使得這種擴充方式缺乏靈活性;並且隨著子類的增多(擴充功能的增多),各種子類的組合(擴充功能的組合)會導致更多子類的膨脹(多繼承)。 如何使“對象功能的擴充”能夠根據需要來動態(運行時)地實現?同時避免“擴充功能的增多”帶來的子類膨脹問題?從而使得任何“功能擴充變化”所導致的影響將為最低? 意圖(Intent) 

直接在.Net程式(C#)中執行 native code

不使用C++CLI,不使用 native dll.直接在 .Net 程式 中之行 native code。在vb時代就曾經有不少好事者做過在vb中直接調用之行彙編代碼。還專門做出了通用的模組來進行彙編代碼的動態產生。實際上這就是執行 inline asm 。.Net 中這個老方法仍然有效。不過今天要介紹的不是這個,而是一個函數介面更多樣的方式。大概是06年寫過一個文章 在 C# 中動態調用 native dll 的匯出函數  。今天介紹的方法和這個有一個公用點,都是利用了.Net

總頁數: 4314 1 .... 436 437 438 439 440 .... 4314 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.