设计模式:生活中的策略模式

发布时间:2024-11-26 07:49

设计模式在编程中的应用:工厂模式实例 #生活知识# #编程教程#

设计模式:生活中的策略模式

静心观复 已于 2024-04-06 10:02:51 修改

于 2024-04-06 09:07:43 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

文章目录 出行方式:策略对象选择出行方式:策略选择出行规划者:上下文代码实现类比类比总结

策略模式可以通过日常生活中的出行规划来类比。假设你需要从家到达一个目的地,你有多种出行方式可供选择,比如开车、骑自行车、乘坐公共交通或步行。每种出行方式可以看作是一个策略,而你的目的是要选择一个最优的策略来达到目的地。

出行方式:策略对象

在出行规划的例子中,每种出行方式(开车、骑自行车、乘坐公共交通、步行)都是一个策略。它们各自有不同的成本、时间和舒适度。

选择出行方式:策略选择

你根据当天的天气、交通状况、个人健康状态和时间安排等因素来选择最合适的出行方式。这个决策过程类似于在策略模式中根据上下文选择最合适的策略。

出行规划者:上下文

出行规划者(你)需要考虑所有的因素,并在所有可用的出行方式中选择一个最优的。在策略模式中,上下文(Context)就是执行策略选择的角色。

代码实现类比

如果我们把这个类比转换成代码,那么可以这样来实现:

// 策略接口 interface TravelStrategy { void travelToDestination(); } // 具体策略类:开车 class CarTravelStrategy implements TravelStrategy { public void travelToDestination() { System.out.println("Traveling to destination by car."); } } // 具体策略类:骑自行车 class BikeTravelStrategy implements TravelStrategy { public void travelToDestination() { System.out.println("Traveling to destination by bike."); } } // 具体策略类:乘坐公共交通 class PublicTransportStrategy implements TravelStrategy { public void travelToDestination() { System.out.println("Traveling to destination using public transport."); } } // 具体策略类:步行 class WalkStrategy implements TravelStrategy { public void travelToDestination() { System.out.println("Walking to destination."); } } // 上下文 class TravelContext { private TravelStrategy strategy; public void setTravelStrategy(TravelStrategy strategy) { this.strategy = strategy; } public void travel() { strategy.travelToDestination(); } } // 客户端代码 public class StrategyPatternExample { public static void main(String[] args) { TravelContext context = new TravelContext(); // 假设今天天气晴朗,选择骑自行车 context.setTravelStrategy(new BikeTravelStrategy()); context.travel(); // 如果开始下雨,改为乘坐公共交通 context.setTravelStrategy(new PublicTransportStrategy()); context.travel(); } }

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 类比总结

通过这个出行规划的类比,我们可以更深入地理解策略模式:

策略的多样性:就像出行方式有很多种,策略模式允许在不同的算法间自由切换。上下文的决策:出行规划者(上下文)根据当前的情况选择最合适的出行方式,类似于策略模式中上下文的作用。策略的封装:每种出行方式的具体实现是封装的,主要关注点是到达目的地,这与策略模式中的策略封装相对应。策略的替换:策略模式允许在运行时根据不同情况更换策略,就像你可以根据天气变化选择不同的出行方式一样。

策略模式强调了算法的可替换性和上下文在选择策略时的灵活性。

网址:设计模式:生活中的策略模式 https://www.yuejiaxmz.com/news/view/277429

相关内容

【设计模式】策略模式 ( 简介
C++ 设计模式之策略模式
设计模式之策略模式实例
行为型设计模式之策略模式(Strategy)
重学 Java 设计模式:实战策略模式「模拟多种营销类型优惠券,折扣金额计算策略场景」
说说策略模式在我们生活的场景?
【设计模式】代理模式
策略模式实现旅游出行策略
从生活中领悟设计模式
津津乐道设计模式

随便看看