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

本文详细介绍了策略模式的概念、优缺点及其结构,包括如何在实际中使用策略模式来避免多重条件语句,提高代码的可扩展性和可维护性。通过一个交通出行方式选择的实例,展示了策略模式的实现,包括抽象策略类、具体策略类和环境类的定义,以及代码演示和实验结果,阐述了策略模式在解决特定问题时的优势。

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

系列文章目录

第六章  行为模式(上)


目录

系列文章目录

前言

一、🌍策略(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.🌕实验结果🌕

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

总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值