设计模式之分组策略

本文深入探讨了策略模式的概念,它包括一个接口定义的策略接口和多个实现该接口的具体策略类。上下文类持有策略接口的引用,并通过这个引用调用具体策略类的方法。策略模式遵循开闭原则,允许在不修改原有上下文的情况下引入新的策略。通过这种模式,开发者可以灵活地选择和切换策略,以适应不同场景的需求。

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

策略(Strategy):一个接口,接口内部定义若干抽象方法;

具体策略(ConcreteStrategy):继承接口的某个类,类重写并具体实现接口定义的方法;

上下文(Context):包含有策略声明的变量。提供一个方法,该方法 委托 策略变量 调用 具体策略所重写的策略借口中的方法。

简单来说,即在上下文中通常做这些事:

a.声明接口变量(声明策略变量) 

b.定义方法1: 用声明的接口变量,接收方法形参传递过来的所需调用的继承接口的类对象,即 接口变量 对 实现接口类对象的引用。(策略变量引用具体策略对象)

c.定义方法2: 用完成对象引用的接口变量调用 实现接口类 中的具体方法。(使用具体策略的方法)

根据策略模式定义的类和接口就是一个开发框架,用户可以使用该框架进行程序设计,策略(框架核心)中的细节和核心部分用户可以不关心并且也无法触及和修改,但用户可以使用这个策略进行具体策略(在框架核心基础上扩展的具体框架)的开发,而不影响到策略。根据策略模式给出的开发框架模式满足“开——闭原则”,当增加新的具体策略时,不需要修改上下文类的代码,上下文就可以引用新的具体策略的实例。



public interface group{//策略(框架核心)
void group();
}
public class groupOne implements group{//具体策略(在框架核心基础上扩展的具体框架)
public void group(){
System.out.println("分组策略一");

}
}
public class groupTwo implements group{
public void group(){
System.out.println("分组策略二");

}
}
public class interGroup{//上下文
group g;
public void setGroup(group g){
this.g=g;
}
public void useGroup(){
g.group();
}
}
public class groupMain{//使用具体策略的应用(使用具体框架的应用)
public static void main(String args[]){
interGroup iG=new interGroup();
iG.setGroup(new groupOne());
iG.useGroup();
iG.setGroup(new groupTwo());
iG.useGroup();
}
}
输出:
分组策略一
分组策略二


参考自 《java面向对象程序设计——实验指导与习题解答(张跃平等 著)》




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值