UML:Sample:Prototype ()declares an interface for cloning itself 定義複製對象的介面ConcretePrototype ()implements an operation for cloning itself 實現複製自己的操作Client () creates a new object by asking a prototype to clone
UML:AbstractClass ()defines abstract primitive operations that concrete subclasses define to implement steps of an algorithm 定義一個抽象的原始操作,來使子類實現演算法步驟implements a template method defining the skeleton of an algorithm. The template method calls
Process 組件提供對正在電腦上啟動並執行進程的訪問。用最簡短的話來說,進程就是當前啟動並執行應用程式。線程是作業系統向其分配處理器時間的基本單位。線程可執行進程的任何一部分代碼,包括當前由另一線程執行的部分。對於啟動、停止、控制和監視應用程式等任務,Process 組件是很有用的工具。使用 Process 組件,可以擷取正在啟動並執行進程的列表,或者可以啟動新的進程。Process 組件用於訪問系統進程。初始化 Process 組件後,可使用該組件來擷取有關當前啟動並執行進程的資訊。此類資
1.6 The Framework Class Library 架構類庫 .NET架構類庫包括.NET架構類庫(Framework Class Library,簡稱FCL)程式集。FCL是一個包含幾千個類型的定義,每一個類型都提供了某種功能的DLL集。微軟打算添加更多的類庫,比如Windows SideShow Managed API SDK 和 DirectX SDK。這些新增的類庫提供更多的類型,更多的功能給你用。 下面是一些允許開發人員使用的程式集,可以用來建立各種應用程式: ■ Web
25.7 Using a Dedicated Thread to Perform an Asynchronous Compute-Bound Operation 使用專用線程執行非同步計算限制操作 本節將展示如何建立一個線程,並讓它執行一次非同步計算限制(asynchronous compute-bound)操作。雖然會教你具體如何做,但強烈建議你避免採用這裡展示的技術。相反,應該盡量使用CLR的線程池來執行非同步計算限制操作,這方面的詳情將在第26章“計算限制的非同步作業”討論。 在某些情況下
Item 17: Implement the Standard Dispose Pattern實現標準的釋放模式 ● 現在是時候來討論如何寫代碼來管理這些類佔用的非記憶體資源了。一個標準的模式就是利用.Net架構提供的方法處理非記憶體資源。Now it’s time to cover how to write your own resourcemanagement code when you create types that contain resources other than
1.7 The Common Type System 一般型別系統 到目前為止,你應該已經知道CLR是關於類型的。類型為應用程式和組件提供了它們所需的功能。類型也作為一種機制是的一種語言編寫的代碼可以和另一種語言編寫的代碼進行無縫的繼承。猶豫類型是CLR的基礎,微軟為此專門指定了一個正式的規範——一般型別系統(Conmmon Type System)來描述類型的定義和行為。 Note:實際上微軟已經向ECMA提交了CTS,以及其他的.NET架構部分,包括檔案格式化、中繼資料、IL以及訪問底層的平
25.8 Reasons to Use Threads 使用線程的理由 使用線程是出於三方面的理由: ● 可以使用線程將代碼同其他代碼隔離。這將提高你的應用程式的可靠性。事實上,這也是為什麼Windows在OS中引入線程概念的原因。Windows之所以需要線程來獲得可靠性,是因為你的應用程式對於作業系統來說是第三方組件,而Microsoft不會在你發布應用程式之前對這些代碼的品質進行驗證。但在發布前,你應該自行測試自己的所有應用程式。另外,由於你已經測試了完整的應用程式,所以應該知道它們是健壯和
1.8 The Common Language Specification 通用語言規範 COM允許不同語言建立的對象能夠進行相互之間的訪問。另一方面,CLR現在整合了所有語言,並且允許一種語言建立的對象在另一個不同語言編寫的代碼中被看做同等的成員。CLR的標準類型集合、中繼資料、和通用執行環境使得這種整合成為可能。 語言整合是一個很遙遠的目標,因為有一件事情是不容忽視的,程式設計語言之間有很大的區別。比如說,一些語言不區分大小寫符號,有些不提供不帶正負號的整數,有些不支援操作符重載,有些方法不
25.4 CPU Trends CPU趨勢 在過去,CPU速度一直隨著時間也在變的越來越快,所以在舊機子上運行慢的應用程式在新機子上一般會快一些。然而,CPU製造商已經無法延續CPU越來越快的趨勢。當你的CPU處於告訴的狀態,它們會產生更多的熱量。幾年前,我從一個著名的廠商那裡購買了一台新款膝上型電腦。這台電腦的韌體有一個bug,造成它的風扇故障。最後,在開機一會以後,CPU和主板便燒壞了。硬體廠商更換了機子,並“改進”了韌體,是風扇能更頻繁的轉動。不幸的是,這也讓電用的更塊了,因為風扇也浪費電
Item 14: Minimize Duplicate Initialization Logic 最小化重複的初始化邏輯寫構造器經常是一種重複的工作。許多人寫好第一個構造器後,用複製、粘貼到另一個構造器,來滿足對類的重載。從現在起,不要在這樣做,當你發現多種構造器擁有相同的邏輯時,把相同的邏輯提煉出來,放到一個公用的構造器中。你會體驗到防止代碼重複的好處。而編譯器也最小化的執行代碼,構造器允許一個構造器去訪問另一個構造器Code highlighting produced by
Item 10:使用選擇性參數來減小方法重載 Use Optional Parameters to Minimize Method Overloads這似乎不是什麼很難實現或很新穎的特性(C#4.0新增),只要編譯器的支援就可以(VB很早就支援了)。估計加入的原因是群眾的呼聲太高了。C#中在調用點對已命名的參數進行了支援。這意味著正式參數名稱現在是你的公用介面的一部分類型。改變一個公用參數的名稱可能會破壞調用代碼。這意味著你應該避免在許多情況下使用具名引數,,你也應該避免在公用或受保護的方法中,