在群里看到一則招聘信息,《基本功扎實,對DDD、OO、IOC、AOP等有深刻認識,熟悉常用設計模式?!?OO是什么??查了一下原來 OO 原來指的是 面向對象編程(OOP),于是就總結了一些常用的術語和概念。
一、編程范式
編程范式(Programming Paradigms)是指編程的不同方法、風格或思維方式
1. OOP (面向對象編程)
- ? 面向對象編程:一種編程范式,強調對象和類的使用,支持封裝、繼承和多態性。C# 是一種強類型、面向對象的語言。
2. AOP (面向切面編程)
- ? 面向切面編程:一種編程范式,用于處理橫切關注點(如日志記錄、事務管理等)。通過在不修改核心業務代碼的情況下,通過切面(aspects)來添加附加行為。
3. DDD (領域驅動設計)
- ? 一種軟件設計理念,強調業務領域的建模,將業務需求直接映射到代碼結構中,幫助開發者更好地理解和實現復雜業務邏輯。
二、設計模式
1. DI (依賴注入)
- ? 依賴注入:一種設計模式,通過將依賴關系傳遞到類的構造函數、屬性或方法中,而不是在類內部硬編碼創建依賴,來實現解耦。有助于提高代碼的可測試性和可維護性。
2. IoC (控制反轉)
- ? 控制反轉:是一種設計原則,使得控制流從程序本身轉移到框架或外部容器中。DI 是實現 IoC 的一種常見方法。
3. SOLID 原則
SOLID 原則是面向對象編程中五個設計原則的縮寫,旨在提高軟件設計的可維護性、可擴展性和可理解性
- ? 面向對象設計原則:一組用于編寫可維護和擴展的面向對象代碼的原則,包含五個基本原則:
- ? S: 單一職責原則(Single Responsibility Principle)
- ? O: 開放封閉原則(Open/Closed Principle)
- ? L: 里氏替換原則(Liskov Substitution Principle)
- ? I: 接口隔離原則(Interface Segregation Principle)
- ? D: 依賴倒轉原則(Dependency Inversion Principle)
4. Singleton Pattern (單例模式)
- ? 單例模式:確保類只有一個實例,并提供全局訪問點。通常用于需要全局共享資源的場景。
5. Factory Pattern (工廠模式)
- ? 工廠模式:一種創建對象的設計模式,客戶端無需指定具體的類,而是通過工廠方法獲取對象。
6. Repository Pattern (倉儲模式)
- ? 倉儲模式:一種設計模式,旨在將數據庫操作封裝在一個層次中,提供與數據庫交互的抽象接口。
7. CQRS (命令查詢職責分離)
- ? 將讀取和寫入操作分離到不同模型中,優化性能和可擴展性。適用于復雜的業務場景,尤其是 DDD 中。
三、運行時環境
1. CLR (公共語言運行時)
- ? 公共語言運行時:.NET 平臺的核心部分,負責代碼的執行、內存管理、安全性、異常處理等。
2. JIT (即時編譯)
- ? 即時編譯:在程序執行時,將中間語言(IL)代碼編譯成機器代碼。CLR 使用 JIT 編譯器將 C# 代碼從中間語言轉換為特定平臺的機器代碼。
3. P/Invoke (平臺調用服務)
- ? 平臺調用服務:允許 .NET 程序調用 Windows API 或其他本地代碼庫(如 C、C++ 編寫的庫)。通常用于與外部代碼庫交互。
四、內存管理
1. **GC **
- ? 垃圾回收:自動管理內存的一種機制。C# 使用 CLR 的垃圾回收來自動回收不再使用的對象。
2. Value Type (值類型)
- ? 值類型:C# 中的一種數據類型,包括基本數據類型(如 int、char、double)和結構體(struct)。值類型存儲的是數據本身。
3. Reference Type (引用類型)
- ? 引用類型:C# 中的一種數據類型,包括類(class)、數組和委托等。引用類型存儲的是指向數據的引用(內存地址)。
4. Boxing and Unboxing (裝箱與拆箱)
- ? 裝箱:將值類型轉換為引用類型(通常是
object
類型)。 - ? 拆箱:將引用類型(通常是
object
)轉換回原始的值類型。
Memory Management (內存管理)
- ? 內存管理:C# 使用垃圾回收(GC)來自動管理內存。在運行時,CLR 會跟蹤對象的生命周期并在對象不再需要時釋放它們。
五、并發編程
1. Thread (線程)
- ? 線程:是執行代碼的基本單位。C# 提供了多線程編程的支持,可以在多個線程中并發執行任務,提高程序的效率。
2. Task
- ? 任務:C# 中的并行編程單元,比線程更輕量級,通常用于表示異步操作的完成狀態。
Task
與 async
/await
配合使用時,能夠簡化異步編程。
3. Async/Await
- ? 關鍵字用于簡化異步編程,非阻塞地執行異步操作。 通過
await
,可以非阻塞地執行異步操作并等待其完成。
4. Mutex (互斥體)
- ? 互斥體:一種同步機制,用于避免多個線程同時訪問共享資源,確保在任意時刻只有一個線程可以訪問該資源。
5. Semaphore (信號量)
- ? 信號量:一種同步原語,用于控制同時訪問某個資源的線程數量。信號量有一個計數器,指示當前可用的資源數量。
六、數據訪問
1. LINQ (語言集成查詢)
- ? 用于處理數據查詢的功能,支持
IEnumerable
和 IQueryable
數據源。
2. LINQ to SQL / Entity Framework
- ? LINQ to SQL:一種使用 LINQ 查詢 SQL 數據庫的方式??梢栽诖a中直接使用 C# 查詢數據庫。
- ? Entity Framework (EF):一種 ORM(對象關系映射)框架,通過對象和關系數據庫之間的映射簡化數據庫操作。
七、其他重要概念
1. Tuple (元組)
- ? 元組:C# 中用于表示多個值的集合,可以是一組不同類型的元素的組合。
2. Lambda Expression (Lambda 表達式)
- ? Lambda 表達式:C# 中用于定義匿名方法或表達式的簡潔語法,通常用于 LINQ 查詢、事件處理等。
3. Delegate (委托)
- ? 委托:C# 中的類型安全的函數指針,可以用來引用和調用方法。是事件和回調的基礎。
4. Event (事件)
- ? 事件:C# 中用于處理消息傳遞和通知的機制,通常與委托一起使用,常用于 UI 編程和應用程序之間的通信。
5. NuGet
- ? NuGet:是一個包管理工具,用于管理 .NET 項目中的第三方庫和組件。通過 NuGet,可以方便地安裝、更新和刪除項目依賴的庫。
6. Reflection (反射)
- ? 反射:C# 提供的一個強大機制,允許程序在運行時檢查對象的類型信息,并動態訪問和操作類型的元數據、方法、屬性等。
7. Attribute (特性)
- ? 特性:用于為類、方法、屬性等添加元數據的標簽??梢栽谶\行時通過反射讀取這些特性,用于不同的應用,如序列化、驗證、日志記錄等。
8. Null Coalescing Operator (??)
- ? 空合并運算符:C# 中的運算符
??
用于簡化空值檢查。如果變量是 null
,則返回默認值。
9. Extension Methods (擴展方法)
- ? 擴展方法:一種允許向現有類型添加新方法的方式,而無需修改該類型的源代碼。通過靜態類和
this
關鍵字實現。
10. Lazy Loading (延遲加載)
- ? 延遲加載:一種設計模式,在程序需要時才加載資源,而不是一開始就加載所有資源。這有助于提高程序啟動速度和節省資源。
Interface (接口)
- ? 接口:定義了類應該實現的方法和屬性的契約,接口不能包含實現細節。類通過實現接口來提供實際功能。
Abstract Class (抽象類)
- ? 抽象類:一個不能實例化的類,通常作為其他類的基類。抽象類可以包含部分實現,并允許子類實現自己的方法。
Polymorphism (多態性)
- ? 多態性:通過繼承和接口實現的一種特性,允許不同對象以相同的方式響應相同的消息。是面向對象編程中的一個重要特性。
TDD (測試驅動開發)
- ? 測試驅動開發:一種軟件開發方法,開發人員首先編寫測試用例,然后編寫代碼以通過測試。
閱讀原文:原文鏈接
該文章在 2025/3/24 17:08:41 編輯過