# design_pattern_tutorial **Repository Path**: sanzk/design_pattern_tutorial ## Basic Information - **Project Name**: design_pattern_tutorial - **Description**: C# Design Patterns : A Tutorial 设计模式导论例程 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-01 - **Last Updated**: 2026-05-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 设计模式教程 (Design Patterns Tutorial) 本项目是一个C#设计模式教程,包含了多个示例应用程序,演示了各种常用的面向对象设计模式。每个子项目都展示了特定的编程概念和设计模式的应用。 ## 项目结构 ### 控制台应用程序 (Console Apps) | 项目 | 描述 | 涉及的模式/概念 | |------|------|-----------------| | ConsoleApp1 | 基类Person与派生类Employee的继承示例 | 抽象类、继承、方法override | | ConsoleApp2 | 数组列表操作工具类 | 集合操作、泛型 | | ConsoleApp3 | 基础控制台应用 | 基础结构 | | ConsoleApp4 | 基础控制台应用 | 基础结构 | | ConsoleApp5 | 文件读取操作 | 文件I/O、StreamReader | | ConsoleApp6 | 文件处理类 | 文件读写、StreamWriter | ### Windows窗体应用程序 (WinForms Apps) | 项目 | 描述 | 涉及的模式/概念 | |------|------|-----------------| | WinFormsApp1 | 文本大小写转换 | 委托(delegate)、回调函数 | | WinFormsApp2 | 位列表操作 | 索引器(indexer)、位运算 | | WinFormsApp3 | 矩形与正方形绘制 | 继承、方法override | | WinFormsApp4 | 双重边框矩形 | override与new的区别 | | WinFormsApp5 | 自定义HiTextBox控件 | 自定义控件扩展 | | WinFormsApp6 | 图形形状系统 | 抽象类、多态 | | WinFormsApp7 | 姓名解析工厂 | 简单工厂模式 | | WinFormsApp8 | 蝴蝶运算器 | 抽象工厂/策略模式 | | WinFormsApp9 | 游泳比赛分组 | 工厂方法模式 | ## 核心设计模式示例 ### 1. 抽象类与继承 (ConsoleApp1) 展示基类Person与派生类Employee之间的继承关系: ```csharp public abstract class Person { public abstract string getJob(); } public class Employee : Person { public override string getJob() { /* ... */ } } ``` ### 2. 委托模式 (WinFormsApp1) 使用委托实现文本格式化的动态切换: ```csharp private delegate string fTxDelegate(string s); fTxDelegate ftx; // 根据单选按钮选择不同的处理方式 private void opCap_CheckedChanged(object sender, EventArgs e) { ftx = Capital1.fixText; } ``` ### 3. 索引器模式 (WinFormsApp2) 实现位列表的索引器访问: ```csharp public class BitList { public int this[int index] { get { /* 获取指定位的值 */ } } } ``` ### 4. 抽象类与多态 (WinFormsApp6) 使用抽象类实现图形系统: ```csharp public abstract class Shape { public abstract void draw(Graphics g); } public class Rectangle : Shape { public override void draw(Graphics g) { /* ... */ } } public class Circle : Shape { public override void draw(Graphics g) { /* ... */ } } ``` ### 5. 工厂模式 (WinFormsApp7) 简单工厂模式根据输入创建不同类型的名字解析器: ```csharp public class NameFactory { public Namer getName(string name) { // 根据逗号位置判断是"名+姓"还是"姓+名" } } ``` ### 6. 工厂方法模式 (WinFormsApp9) 抽象工厂方法模式处理游泳比赛分组: ```csharp public abstract class Event { public abstract Seeding getSeeding(); } public class PrelimEvent : Event { public override Seeding getSeeding() { /* ... */ } } ``` ### 7. 策略模式 (WinFormsApp8) 使用抽象类实现不同的运算策略: ```csharp public abstract class Butterfly { abstract public void Execyte(Complex x, Complex y); } public class AddButterfly : Butterfly { public override void Execyte(Complex xi, Complex xj) { /* ... */ } } ``` ## 运行要求 - .NET Framework 4.x 或更高版本 - Visual Studio 2017 或更高版本 - Windows操作系统(用于运行WinForms应用) ## 使用说明 1. 打开对应的解决方案(.sln)文件 2. 设置启动项目 3. 按F5或Ctrl+F5运行 每个子项目都可以独立运行,用于学习特定的设计模式。 ## 学习建议 建议按以下顺序学习: 1. ConsoleApp1 - 理解基础继承概念 2. WinFormsApp3/WinFormsApp4 - 掌握override与new的区别 3. WinFormsApp6 - 学习抽象类和多态 4. WinFormsApp7 - 理解工厂模式 5. WinFormsApp8 - 学习策略模式 6. WinFormsApp9 - 掌握工厂方法模式 ## 许可证 本项目仅供学习交流使用。