专业的JAVA编程教程与资源

网站首页 > java教程 正文

使用 Java 的策略设计模式(在java中找一个应用策略模式的实例)

temp10 2024-09-30 00:30:23 java教程 77 ℃ 0 评论

行为设计模式:策略模式

嗨开发商! 设计模式对我来说被认为是一个非常有趣的话题。 这就是为什么我想写他们。

使用 Java 的策略设计模式(在java中找一个应用策略模式的实例)

策略模式是可用的行为模式之一。

它允许我们操作代表各种策略的对象运行时。 策略对象执行相关策略。 上下文由一个策略组成。 客户端将始终调用抽象。

让我们先看看UML图……

在这里,上下文是使用策略的人。这样,我们将A族算法定义为类层次结构。

让我们举个例子……

想象一下,我们有一个购物中心。我们可以使用信用卡/借记卡等任何卡进行付款。所以,支付上下文应该能够接受任何卡片:就像一个卡片家族......但是怎么做呢?

首先,我们需要一张牌的策略……


支付卡

public interface PaymentCard {
    void pay(String buyer, int amount);
}

现在我们可以决定卡片类型——具体的策略......


信用卡

public class CreditCard implements PaymentCard {
    @Override
    public void pay(String buyer, int amount) {
        System.out.println("paying with CreditCard: Buyer = " + buyer + " Amount = " + amount);
    }
}


借记卡

public class DebitCard implements PaymentCard {
    @Override
    public void pay(String buyer, int amount) {
        System.out.println("paying with DebitCard: Buyer = " + buyer + " Amount = " + amount);
    }
}

让我们创建我们将使用卡片进行支付的上下文……记住!上下文应该由策略组成……


支付上下文

public class PaymentContext {
    private final PaymentCard strategy;
    public PaymentContext(PaymentCard strategy) {
        this.strategy = strategy;
    }
    public void doPayment(String buyer, int amount) {
        this.strategy.pay(buyer, amount);
    }
}

如果你看到这个,PaymentContext 正在接受任何类型的卡(PayCard)!如果有新的卡片类型出现,无需担心……上下文将保持不变……只是我们需要添加另一个具体策略。

无论如何,这也有助于实现 SOLID 原则之一——开放封闭原则(对扩展开放,但对修改关闭)

最后,整个班级设置将是这样的。

StrategyDemo 是我们用来练习的游乐场。 让我们为该策略创建一个上下文。

public class StrategyDemo {
    public static void main(String[] args) {

        PaymentContext paymentContext = new PaymentContext(new CreditCard());
        paymentContext.doPayment("salitha", 100);

        paymentContext = new PaymentContext(new DebitCard());
        paymentContext.doPayment("salitha", 100);

    }
}

输出会是什么?

您可以看到可以使用任何卡完成付款! 根据每张卡的处理,完成支付。

这就是策略模式的全部内容!!!

实际上,这些模式在日常编程以减少设计异常时非常有用。 所以,最好的办法是多练习和使用! 我希望你明白整个想法..

我会在未来写更多的设计模式……

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表