跳至主要內容

Strategy Pattern

ChenSino原创设计模式大约 2 分钟

策略模式【CHATGPT回答】

策略模式(Strategy Pattern)是一种行为型设计模式,它将一组可相互替换的算法封装成独立的对象,并对外暴露相同的接口,从而使得它们可以根据需要动态地替换,以实现不同的行为。

策略模式由三个角色组成,分别是:

1. 策略(Strategy):提供了一个公共的接口,用于实现不同的算法。

2. 具体策略(ConcreteStrategy):实现了策略接口,并提供了具体的算法实现。

3. 上下文(Context):负责协调各个策略的执行,它持有一个策略对象,可以动态地切换策略对象,以改变上下文的行为。

在策略模式中,不同的算法被封装在具体的策略中,这些策略可以根据上下文的需要进行灵活替换,从而实现不同的功能。因此,策略模式具有高度的可扩展性和灵活性,并且可以有效地减少代码冗余。

例如,在订单系统中,可以使用策略模式来处理收费方式的问题。具体而言,可以定义一个ChargeStrategy接口,用于实现不同的收费算法。然后,定义多个具体的收费算法,分别实现ChargeStrategy接口。最后,在订单系统中,可以根据订单的不同情况,动态地设置不同的收费算法,以实现灵活的收费功能。

java策略模式是否就是给定一个接口或者抽象类,提供多个实现类?

是的,Java策略模式就是定义一个接口或抽象类,然后提供多个实现类来实现接口或抽象类中的方法,从而实现不同的算法策略。通过使用策略模式,我们能够在程序运行时动态地切换不同的算法实现,从而实现更加灵活和可扩展的设计。同时,策略模式也符合开闭原则,因为我们可以在不修改已有代码的情况下,通过添加新的策略类来扩展系统的功能。

Spring中策略模式的使用

太多了,一个接口多个实现,

我的工作中用到的策略模式

登录功能,一个系统可以有很多中登录方式,比如帐号密码登录、手机号验证码登录、oauth2登录,我们可以定义一个接口,接口中有个login方法,返回一个LoginVO对象,不同的登录方式用不同的类实现就可以了。通常策略模式要配合工厂模式实现,工厂根据前端传递来的参数获取不同策略类,然后进行相应的逻辑处理