首页 > 其他分享 >11.4

11.4

时间:2024-11-20 10:20:44浏览次数:1  
标签:PaymentStrategy 策略 11.4 void amount public String

策略模式

策略模式是一种行为设计模式,它定义了一系列算法,并将每个算法封装在独立的可互换的策略类中,使得算法可以独立于客户端而变化。

下面是使用Java编写的一个简单的策略模式示例:

// 策略接口
interface PaymentStrategy {
    void pay(double amount);
}

// 具体策略类1
class CreditCardPayment implements PaymentStrategy {
    private String cardNumber;
    private String cvv;

    public CreditCardPayment(String cardNumber, String cvv) {
        this.cardNumber = cardNumber;
        this.cvv = cvv;
    }

    @Override
    public void pay(double amount) {
        System.out.println("Paying $" + amount + " with credit card: " + cardNumber);
    }
}

// 具体策略类2
class PayPalPayment implements PaymentStrategy {
    private String email;
    private String password;

    public PayPalPayment(String email, String password) {
        this.email = email;
        this.password = password;
    }

    @Override
    public void pay(double amount) {
        System.out.println("Paying $" + amount + " with PayPal account: " + email);
    }
}

// 环境类
class ShoppingCart {
    private PaymentStrategy paymentStrategy;

    public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
        this.paymentStrategy = paymentStrategy;
    }

    public void checkout(double amount) {
        paymentStrategy.pay(amount);
    }
}

// 示例
public class Main {
    public static void main(String[] args) {
        ShoppingCart cart = new ShoppingCart();

        // 使用信用卡支付
        PaymentStrategy creditCardPayment = new CreditCardPayment("1234567890", "123");
        cart.setPaymentStrategy(creditCardPayment);
        cart.checkout(100.50);

        // 使用PayPal支付
        PaymentStrategy payPalPayment = new PayPalPayment("[email protected]", "password");
        cart.setPaymentStrategy(payPalPayment);
        cart.checkout(250.75);
    }
}

在这个示例中,我们定义了一个策略接口 PaymentStrategy,并实现了两个具体的策略类 CreditCardPayment 和 PayPalPayment。然后,我们创建了一个环境类 ShoppingCart,它具有一个 paymentStrategy 成员变量,用于执行支付操作。通过设置不同的策略,我们可以在购物车中使用不同的支付方式进行结账。

在示例中,我们首先使用信用卡支付了购物车中的商品,然后使用 PayPal 账户进行支付。通过策略模式,我们可以动态地切换不同的支付策略,而不需要修改 ShoppingCart 类的代码。

策略模式使得算法的实现独立于客户端,并可以在运行时动态选择不同的算法,提高了代码的灵活性和可扩展性。

标签:PaymentStrategy,策略,11.4,void,amount,public,String
From: https://www.cnblogs.com/luoqingci/p/18556286

相关文章

  • 11.4
    实验7:单例模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解单例模式的动机,掌握该模式的结构;2、能够利用单列模式解决实际问题。 [实验任务一]:学号的单一仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。实验要求: 类图  代码packag......
  • Windows 免安装运行MariaDB 11.4
    下载https://mariadb.org/download/?t=mariadb&o=true&p=mariadb&r=11.4.4&os=windows&cpu=x86_64&pkg=zip&mirror=xtom_hk解压解压到指定位置(建议放在SSD所在盘符),如:D:\mariadb-11.4.4设置用户环境变量添加新的用户环境变量:MARIADB_HOMEC:\green\mariadb-11.4.4添加......
  • 上周热点回顾(11.4-11.10)
    热点随笔:· 【故障公告】k8s集群2台32核64G节点服务器被释放造成全站故障 (博客园团队)· 强!34.1Kstar!再见Postman,新一代API测试利器,功能强大、颜值爆表! (狂师)· .NET开发者福音:JetBrains官方宣布Rider非商用免费开放! (追逐时光者)· 又给会员送福利,100台一年华为云......
  • 代码随想录之滑动窗口、Java日期api、集合(11.4-11.11)
    代码1、长度最小的子数组⭐使用滑动窗口的思想,外层循环控制结束位置j,内层循环控制起始位置i,看似是双层循环,但时间复杂度是o(2n)。 2、水果成篮自己想法:使用backet1和backet2表示篮子1和篮子2;使用backet1Account和backet2Account分别表示两个篮子里水果的数量,内层循环将i指针......
  • 11.4-11.10做题总结
    自从CCF出分,到得知自己考了150pts,再到得知自己无法参加NOIP,我的内心一直是悲痛的。WB老师之后让我做LYD做的算法进阶指南。tx告诉我acwing上有单独题单,于是一直做acwing的题。AcWing89.a^b快速幂即可。AcWing5579.增加模数拆开。AcWing90.64位整数乘法......
  • 11.4 个性化学习
    2、个性化学习的原理在个性化学习中,系统会根据每个学生的学习水平、学习速度、学习兴趣等因素进行动态调整,使教学内容更加契合个体的需求。个性化学习系统的核心理论包括:适应性学习:即系统根据学生的进展动态调整学习内容。适应性学习背后的理论包括“掌握学习理论”(MasteryLear......
  • 11.4实验9:桥接模式
    [实验任务一]:两个维度的桥接模式用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。实验要求:1. 画出对应的类图;  2.提交源代码;publicclassAsphaltRoadextendsRoad{   publicAsphaltRoad(Vehiclevehicle){       super(ve......
  • 11.4
    一.多选题(共3题,30分)(多选题)数据库管理系统的职责:A.数据组织B.数据加密C.数据存储D.数据管理我的答案:ACD:数据组织;数据存储;数据管理;正确答案:ACD:数据组织;数据存储;数据管理;10分(多选题)关系模型的组成包括:A.关系数据B.关系操作集合C.关系数据结......
  • 2024.11.4~2024.11.9
    2024.11.4今天早上没有醒来,一抬表发现7:03了直接破防(悲上午模拟赛T1直接一个没思路,想了1h都没想出来,打了10分遗憾离场,T2直接就是死磕1h也没有丝毫思路,然后最后10分非常惨下午都在调T1,直到4点才调完,晚上情绪状态比较不稳定,但是调整的很好,还是坚持做了5到题,比较可以csp-s160分完......
  • 11.4 - ? 改题纪要
    11.4-?改题纪要NOIP2024模拟1不是每个题都有乱搞过得是吧。T1玩游戏先前缀和,问题变成\(a_i+b_j\le0\)考虑显然贪心,每次移动到更优的位置。这样可以跳到最小的位置,发现到终点和从起点跳过来是类似的,倒着跑一遍即可。T2排列首先发现当\(k>\logn\)时一定无解因......