【设计模式】策略模式实例

系列文章目录

第六章  行为模式(上)


目录

系列文章目录

前言

一、🌍策略(Strategy)模式是什么?🌍

二、🌍策略(Strategy)模式的优缺点🌍

三、🌍策略(Strategy)模式的结构🌍

四、🌍实例演示🌍

1.🌕实例概述🌕

2.🌕代码演示🌕

3.🌕实验结果🌕

总结


前言

        设计模式,又称为软件设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结

        学习设计模式可以提高程序员的思维能力编程能力设计能力,使程序设计更加标准化代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期

一、🌍策略(Strategy)模式是什么?🌍

        该模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。

二、🌍策略(Strategy)模式的优缺点🌍

优点:

        1)多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句

        2)策略模式提供了一系列的可供重用的算法族,恰当使用继承可以把算法族的公共代码转移到父类里面,从而避免重复的代码

        3)策略模式可以提供相同行为的不同实现,客户可以根据不同时间或空间要求选择不同的策略;

        4)策略模式提供了对“开闭原则的完美支持,可以在不修改原代码的情况下,灵活增加新算法;

        5)策略模式把算法的使用放到环境类中,而算法的实现移到具体策略类中,实现了二者的分离

缺点:

        1)客户端必须理解所有策略算法的区别,以便适时选择恰当的算法类;

        2)策略模式造成很多的策略类

三、🌍策略(Strategy)模式的结构🌍

策略模式的主要角色有:

        1)抽象策略(Strategy)类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法,一般使用接口或抽象类实现。

         2)具体策略(ConcreteStrategy)类:实现了抽象策略定义的接口,提供具体的算法实现。

         3)环境(Context)类:持有一个策略类的引用,最终给客户端调用。

四、🌍实例演示🌍

1.🌕实例概述🌕

        抽象策略类:TripMode 类,交通工具选择方式

        具体策略类:Bytrian(坐火车),Bycar(坐汽车),Selfdrive(做自驾车),ByTransportation(扩展开放) 类,这里读者可以定义可实现的具体类。

        环境类:WyTour类,依赖于TripMode类,调用TripMode类的getout函数查看选择的交通工具是什么?

2.🌕代码演示🌕

package strategy;

public class strategy {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TripMode tp = new Selfdrive();
		WyTour mytour = new WyTour(tp);
		mytour.Get_getout();
	}

}

//不同交通工具都应有的方法
interface TripMode 
{
    void getout(); //
}
//坐火车
class Bytrian implements TripMode
{

	@Override
	public void getout() {
		// TODO Auto-generated method stub
		System.out.println("已选择交通工具,坐火车。");
	}
}
//坐汽车
class Bycar implements TripMode
{
	@Override
	public void getout() {
		// TODO Auto-generated method stub
		System.out.println("已选择交通工具,坐汽车。");
	}
}
//坐自驾车
class Selfdrive implements TripMode
{
	@Override
	public void getout() {
		// TODO Auto-generated method stub
		System.out.println("已选择交通工具,坐自驾车。");
	}
}

//扩展开放
class ByTransportation implements TripMode
{

	@Override
	public void getout() {
		// TODO Auto-generated method stub
		System.out.println("已选择交通工具,----。");
	}

}
//环境类
class WyTour 
{
    private TripMode _stragety;
    public WyTour(TripMode stragety) 
    {
        _stragety = stragety;
    }
    public void Get_getout() 
    {
        _stragety.getout();
    } 
}


3.🌕实验结果🌕

已选择交通工具,坐自驾车。

总结

        以上就是今天要讲的内容,本文仅仅简单介绍了行为模式下策略模式的定义,优缺点以及其的模式结构,并通过实例演示,进一步反应了在一定需求条件下,策略模式的优点。
 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值