C#设计模式之---策略模式

news/2024/11/25 2:51:24/

策略模式(Stragety Pattern)

策略模式(Stragety Pattern)是一种对象行为模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是 “在美国交个人所得税” 和 “在中国交个人所得税” 就有不同的算税方法。策略模式提供了替代派生的子类,并定义类的每个行为,剔除了代码中条件的判断语句,使得扩展和结合新的行为变得更容易,根本不需要变动应用程序。策略模式可以避免使用多重条件转移语句,系统变得更新灵活。应用策略模式会产生很多子类,这符合高内聚的责任分配模式。

 

using System;
using System.Collections.Generic;
namespace ConsoleApplication
{//一般每个接口或类都写在单独的.cs文件中//本示例为了执行查看方便才写在一起  public interface ITravelStrategy{void travelAlgorithm();}/***具体策略类(ConcreteStrategy)*1:乘坐飞机
*/class AirPlanelStrategy : ITravelStrategy{public void travelAlgorithm(){Console.WriteLine("AirPlanelStrategy:乘坐飞机");}}/***具体策略类(ConcreteStrategy)*2:乘坐火车
*/class TrainStrategy : ITravelStrategy{public void travelAlgorithm(){Console.WriteLine("TrainStrategy:乘坐火车");}}/***具体策略类(ConcreteStrategy)*3:骑自行车
*/class BicycleStrategy : ITravelStrategy{public void travelAlgorithm(){Console.WriteLine("BicycleStrategy:骑自行车");}}/****环境类(Context):*用一个ConcreteStrategy对象来配置。*维护一个对Strategy对象的引用。可定义一个接口来让Strategy访问它的数据。*算法解决类,以提供客户选择使用何种解决方案:
*/class PersonContext{private ITravelStrategy travelStrategy = null;public PersonContext(ITravelStrategy travel){this.travelStrategy = travel;}/***旅行*/public void SetTravelStrategy(ITravelStrategy travel){this.travelStrategy = travel;}/***旅行*/public void travel(){travelStrategy.travelAlgorithm();}}class Program{static void Main(string[] args){//乘坐火车旅行var person = new PersonContext(new TrainStrategy());person.travel();//改骑自行车person.SetTravelStrategy(new BicycleStrategy());person.travel();Console.ReadKey();}}
}


http://www.ppmy.cn/news/779509.html

相关文章

C++常用库函数 7.字符串操作函数

函数名&#xff1a;strcat 函数原型&#xff1a;char *strcat(char*strDestination&#xff0c;const char *strSource)&#xff1b; 参数&#xff1a;strDestination 以空字符结尾的目的字符串 strSource 以空字符结尾的源字符串。 所需头文件&#xff1a;<cstring> …

查mac的生产日期

https://appleserialnumberinfo.com/Desktop/index.php 转载于:https://www.cnblogs.com/ygz0111/p/11474366.html

计算机 无法更改时间格式,如何修改电脑日期格式_如何修改日期格式

2016-12-06 08:03:47 方法一:  1、适合windows xp系统  鼠标右击电脑任务栏/选择“属性”/选择“任务栏”选项卡/在“通知区域”中勾选“显示时钟”/点击“确定”。  2、适合windows ... 2016-12-24 12:44:24 1、打开“设置”  2、在设置列表中找到“通用”选项  3、…

linux系统查询网卡信息,Linux下如何查询电脑中的网卡详细信息呢?

摘要: 下文讲述Linux操作系统下查看网卡详细信息的方法分享&#xff0c;如下所示&#xff1b; 实现环境: CentOS 实现思路: 使用ifconfig命令即可查看网卡信息,如下所示: [rootlocalhost ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:16:3E:11:F3:DB inet addr:172.16.8.2…

Linux查看主机出厂日期,linux 生产常用命令

hostname 显示当前的主机名 pwd 显示当前工作的目录 w who whoami 显示当前用户及已建立的ssh链接 useradd 新建一个普通用户 passwd 修改用户的密码 which 查看系统命令所对应的路径 type 查询命令是否属于内部命令或者外部命令 hash 哈希 把一个命令一个文本通过某种算法生产…

Windows系统的电脑网卡,生产日期等信息查询

1.电脑产品类型和型号 dos下执行systeminfo这个命令 C:\Users\nali>systeminfo主机名: NALI-PC OS 名称: Microsoft Windows 7 旗舰版 OS 版本: 6.1.7601 Service Pack 1 Build 7601 OS 制造商: Microsoft Corporation OS 配置: …

Linux系统查询电脑主机生产日期和主机序列号

1.Linux查询主机生产日期 在命令终端中输入命令&#xff1a;sudo dmidecode -s bios-release-date 2.Linux查询主机序列号 在命令终端中输入命令&#xff1a;sudo dmidecode -s system-serial-number