4.9k 4 分钟

# Socket Socket(计算机术语为:套接字)是计算机网络编程中的一种通信机制,使网络上的两个程序通过一个双向的通信连接实现数据的交换。它是一个抽象层,提供了一套标准的接口,使得应用程序可以通过这套接口与网络通信协议进行交互,实现数据传输和共享。 在网络编程中,Socket 通常被用来实现客户端和服务端之间的通信。客户端通过 Socket 连接到服务端,并向服务端发送数据请求,服务端接收请求并处理后,再将结果返回给客户端。这种通信方式可以用于实现各种不同类型的网络应用程序,如 Web 服务器、聊天软件、在线游戏等。 Socket...
1.6k 1 分钟

# 责任链模式 属于行为型模式。 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。 优点: 降低耦合度。 简化了对象,使得对象不需要知道链的结构。 增强给对象指派职责的灵活性,可以随时增加或修改处理一个请求的结构。 易扩展。 缺点: 一个请求极有可能到了链的末端都得不到处理,或者因为没有正确配置而得不到处理 不正确的配置可能会造成循环调用(死循环) 可能会增加调试的难度 # 类图 # 代码 # 处理者抽象类 namespace...
2.9k 3 分钟

# 命令模式 属于行为型模式。 将一个请求封装成一个对象,从而可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。 优点: 能够比较容易地设计一个命令队列 在需要的情况下,可以较容易地将命令记入日志 允许接收请求的一方决定是否要否决请求 可以容易地实现对请求的撤销和重做 容易扩展 # 类图 # 代码 # 命令类 namespace BehavioralPatterns_CommandPattern{ /// <summary> /// 命令 /// </summary> public abstract...
1.2k 1 分钟

# 桥接模式 属于结构型模式。 将抽象部分(主体类)与实现部分(主题类成员)分离,使它们都可以独立的变化。 适用性: 不希望使用继承导致系统类的个数急剧增加 一个类存在多个维度的变化,且多个维度都需要进行扩展 # 类图 # 代码 # 拥有桥接关系的类 namespace StructuralPattern_BridgePattern{ /// <summary> /// 颜色 /// </summary> public abstract class Color { /// <summary>...
1.5k 1 分钟

# 迭代器模式 属于行为型模式。 提供一种方法顺序访问一个聚合对象中各个元素,而又无须暴露该对象的内部表示。 现在,迭代器模式的实用价值远不如学习价值了,因为现在的高级编程语言已经把这个模式做在语言中了。CSharp 中的迭代器就是一个例子。 接下来讲解的内容不是传统的迭代器模式,而是复刻 foreach 的功能。 # 类图 # 代码 # 用于测试的类 namespace BehavioralPatterns_IteratorPattern{ public class Shape { public string Name; public...
1.9k 2 分钟

# 组合模式 属于结构型模式,它创建了一个树形结构。 将对象组合成树形结构以表示 "部分 - 整体" 的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 应用场景: 想表示对象的部分 - 整体层次结构(树形结构)。 希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。 # 类图 # 代码 # 组件抽象类及其子类 namespace StructuralPattern_CompositePattern{ /// <summary> /// 组件 ///...
1.9k 2 分钟

# 备忘录模式 属于行为型模式。 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 应用场景: 如果在某个系统中使用命令模式,需要实现命令的撤销功能,那么命令模式可以使用备忘录模式来储存可撤销操作的状态。 当角色的状态改变的时候,有可能这个状态无效,这时候就可以使用暂时储存起来的备忘录将状态复原。 数据库的事务管理 存档 缺点:消耗资源,状态数据越多,内存占用就越大。 解决方法:将数据储存到文件中(.txt、.xml、.dat 等文件),由内存占用转变为磁盘占用。 # 类图 # 代码 # 存档类 namespace...
1.8k 2 分钟

# 适配器模式 属于结构型模式。 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器,目的是使控制范围之外的一个原有的对象与某个接口匹配。 适配器模式分为两种:类适配器模式、对象适配器模式 类适配器模式:通过多重继承对一个接口与另一个接口进行匹配,但是 Java、CSharp、VB 等语言都不支持多重继承(C++...
2.7k 2 分钟

# 状态模式 属于行为型模式。 允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。 对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。 在面临大量的 if else 语句时,使用状态模式可以消除这些 if else 语句,并且可以封装变化点,新增条件和状态时,只需要在原来的基础上进行扩展即可。 在有限状态机中使用了这种模式。 # 类图 # 代码 # 状态类 namespace BehavioralPatterns_StatePattern{ /// <summary> /// 状态类 ///...