类的关系02
类图:
classDiagram class TravelContext { - TravelStrategy strategy + setTravelStrategy(TravelStrategy) + executeTravel() } class TravelStrategy { <<interface>> + travel() } class AirplaneTravel { + travel() } class TrainTravel { + travel() } class BicycleTravel { + travel() } TravelContext --> TravelStrategy TravelStrategy <|.. AirplaneTravel TravelStrategy <|.. TrainTravel TravelStrategy <|.. BicycleTravel
源码
// TravelStrategy.java public interface TravelStrategy { void travel(); } // AirplaneTravel.java public class AirplaneTravel implements TravelStrategy { @Override public void travel() { System.out.println("乘坐飞机旅行,速度最快,但费用较高。"); } } // TrainTravel.java public class TrainTravel implements TravelStrategy { @Override public void travel() { System.out.println("乘坐火车旅行,舒适且性价比高。"); } } // BicycleTravel.java public class BicycleTravel implements TravelStrategy { @Override public void travel() { System.out.println("骑自行车旅行,环保且自由,但适合短途旅行。"); } } // TravelContext.java public class TravelContext { private TravelStrategy strategy; public void setTravelStrategy(TravelStrategy strategy) { this.strategy = strategy; } public void executeTravel() { if (strategy == null) { System.out.println("请选择一种旅行方式!"); } else { strategy.travel(); } } } // Main.java public class Main { public static void main(String[] args) { TravelContext context = new TravelContext(); System.out.println("=== 选择飞机旅行 ==="); context.setTravelStrategy(new AirplaneTravel()); context.executeTravel(); System.out.println("\n=== 选择火车旅行 ==="); context.setTravelStrategy(new TrainTravel()); context.executeTravel(); System.out.println("\n=== 选择自行车旅行 ==="); context.setTravelStrategy(new BicycleTravel()); context.executeTravel(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?