策略模式

介绍:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户

1.定义抽象算法类

1 //抽象算法类
2     abstract class strategy
3     { 
4        //算法方法
5         public abstract void AlgorithmInterface();
6     }

2.定义具体的算法去实现抽象类

复制代码
 1 //具体算法A
 2     class ConcreteStrategyA : strategy
 3     { 
 4         //算法A实现方法
 5         public override void AlgorithmInterface()
 6         {
 7             Console.WriteLine("我是算法A的实现方法!");
 8         }
 9     }
10     //具体算法B
11     class ConcreteStrategyB : strategy
12     { 
13         //算法B实现方法
14         public override void AlgorithmInterface()
15         {
16             Console.WriteLine("我是算法B的实现方法!");
17         }
18     }
19     //具体算法C
20     class ConcreteStrategyC : strategy
21     { 
22         //算法C实现方法
23         public override void AlgorithmInterface()
24         {
25             Console.WriteLine("我是算未能C的实现方法!");
26         }
27     }
复制代码

3.上下文,类中有算法类的属性,有一个调用算法类的方法

复制代码
 1 class Context 
 2     {
 3         private strategy strate;
 4         public Context(strategy strate) 
 5         {
 6             this.strate = strate;
 7         }
 8         public void ContextInterface() 
 9         {
10             strate.AlgorithmInterface();
11         }
12     }
复制代码

4.客户端调用

复制代码
1 class Program
2     {
3         static void Main(string[] args)
4         {
5             //获取上下文类
6             Context context = new Context(new ConcreteStrategyA());
7             context.ContextInterface();
8         }
9     }
复制代码

 

posted @   爱生活,爱代码  阅读(256)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示