策略模式

本文介绍了一个使用C#实现的策略模式案例,通过创建不同的策略类来处理正常收费、打折和满减等消费场景,展示了如何利用工厂模式和上下文模式进行策略选择和应用,适用于零售和电商领域的折扣计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication3
{
    abstract class CashSuper
    {
        public abstract double acceptCash(double money);
    }

    //正常消费
    class CashNomal : CashSuper
    {
        public override double acceptCash(double money)
        {
            return money;
        }
    }

    //打折消费
    class CashRebate : CashSuper
    {
        double rebate = 0;

        public CashRebate(double rebate)
        {
            this.rebate = rebate;
        }

        public override double acceptCash(double money)
        {
            return money * rebate;
        }
    }

    //满300减100
    class CashReturn : CashSuper
    {
        private double moneyCondition = 0.0d;
        private double moneyReturn = 0.0d;

        public CashReturn(double condition, double dReturn)
        {
            moneyCondition = condition;
            moneyReturn = dReturn;
        }

        public override double acceptCash(double money)
        {
            if (money >= moneyCondition)
                return money - (Math.Floor(money / moneyCondition) * moneyReturn);

            return money;
        }
    }

    class CashFactory
    {
        public static CashSuper createCashAccess(string type)
        {
            CashSuper cash = null;

            switch (type)
            {
                case "正常收费":
                    cash = new CashNomal();
                    break;
                case "满300返100":
                    cash = new CashReturn(300, 100);
                    break;
                case "打折":
                    cash = new CashRebate(0.8);
                    break;
                default:
                    break;
            }

            return cash;
        }
    }

    class CashContext
    {
        private CashSuper cs;

        public CashContext(CashSuper csuper)
        {
            this.cs = csuper;
        }

        public double GetResult(double money)
        {
            return cs.acceptCash(money);
        }
    }
}

调用类:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.Items.AddRange(new string[] { "正常收费", "满300返100", "打八折" });
            comboBox1.SelectedIndex = 0;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            CashContext cc = null;

            switch (comboBox1.SelectedItem.ToString())
            {
                case "正常收费":
                    cc = new CashContext(new CashNomal());
                    break;
                case "满300返100":
                    cc = new CashContext(new CashReturn(300, 100));
                    break;
                case "打八折":
                    cc = new CashContext(new CashRebate(0.8));
                    break;
                default:
                    break;
            }

            double totalPrices = 0d;
            totalPrices = cc.GetResult(Convert.ToInt32(textBox1.Text) * Convert.ToDouble(textBox2.Text));
            lblResult.Text = totalPrices.ToString();
        }
    }
}

 

转载于:https://www.cnblogs.com/YuanDong1314/p/9009279.html

智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头和超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家和地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值