StrategyPattern和Simple Factory的区别和用法
Strategy Pattern主要用于抽象特定算法或行为的设计模式模式,外表类似于简单工厂模式,但简单工厂模式主要用于生成产品,返回new实例,然后进行相应的编程,而策略模式倾向于指定的唯一的算法策略,初始化实例策略类之后,直接调用算法。在简单工厂中我们只需要传递相应的条件就能得到想要的一个对象,然后通过这个对象实现算法的操作,因为简单工厂中我们实现了switch来处理到底实例化哪个对象。而策略模式使用时必须在客户端首先创建一个想使用的类对象,然后将该对象最为参数传递进去,通过该对象调用不同的算法,因为策略模式中并没有为我们实现具体实例的选取,只是从抽象类中调用了统一接口。在简单工厂模式中实现了通过条件选取一个类去实例化对象,策略模式则将选取相应对象的工作交给模式的使用者,它本身不去做选取工作。
策略模式:定义算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户,属于行为模式,侧重于行为。
简单工厂:将对象的创建完全独立出来,让对象的创建和具体的使用客户无关,实际上的抽象工厂模式属于创建模式,而简单工厂只能算的上是一种编程思想,侧重于创建具体实例。
他们没有本质的区别,只是使用的场景和适合用到的地方是不一样的。
策略模式具体适用于:
1.以不同的格式保存文件;
2.以不同的算法压缩文件;
3.以不同的算法截获图象;
4.以不同的格式输出同样数据的图形,比如曲线 或框图bar等。
Adapter Pattern和Proxy Pattern的区别和用法
适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本接口不兼容而不能一起工作的那些类可以一起工作。代理模式和被代理者的接口是同一个,只是使用中客户访问不到被代理者,所以利用代理间接的访问。这种情况下客户端可以不使用适配,完全可以自己写全新的代码实现自己的方法,但使用了adapter,客户就可以利用现有实现,将一个类的接口转换成客户希望的另外一个接口. 解决接口不兼容问题,也很好的实现了复用。
代理模式:为其他对象提供一种代理以控制对这个对象的访问,侧重于统一的接口名字的情况,因为无权限访问对象内容而设置一个代理帮助处理事务,比如webservice的应用,比如中介公司,都是客户端帮助其本身处理他处理不了的任务的代理元素。大多数运用在代码维护的后期,或者借用第三方库的情况下。举例代码:

//统一获得工资入口 public interface Salery { string GetSalery(); } //技术部的代理,因为技术部对公司工资没有访问权限,需要设置人力资源部的代理,来获得工资 class TeckDepartmentProxy : Salery { private HRDepartment aHR; public string GetSalery() { if (aHR == null) { aHR = new HRDepartment(); } return aHR.GetSalery(); } } //人力资源部,随时获得员工工资 class HRDepartment { public string GetSalery() { return "1k"; } } class Program { static void Main(string[] args) { Salery aTeck = new TeckDepartmentProxy(); Console.WriteLine(aTeck.GetSalery()); }
两种设计模式其实都是为了代码复用,遵循开闭原则的设计思想。通过UML图对比一下,就可以看到两者外表最明显的区别,就是接口的统一和适配问题。
代理模式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述