优雅のJava(八)—— 优雅的策略选择 状态管理 | 策略模式 | 状态模式 | 策略与状态的封装

前言

你是否被一群if else 所烦恼 可能前边写代码一时爽 后边添加逻辑更改需求火葬场?
有时候要处理分类的问题 你的代码就是一群switch 和case 稍微一不小心改错了 全部GG 随着需求增加 每个case变得臃肿不堪 那个时候有没有想过有些优雅的方式来解决case泛滥这个问题呢?

很多时候 状态 策略都具有一些类似的 共性的特征 但是代码上还是不停的重复 你很想改变现状 想让代码简洁 但是无从下手。。

我们可以优雅的封装各个策略 这样策略形成了策略树(比如父策略 子策略) 同样我们可以封装状态 形成状态树 可以自顶而下 先规则 再具体变化 先提取共性再管特性 这些过去我们所学的方法 都是可行的

策略模式 —— 模板模式的改进

封装变化的设计原则 找到变化的部分 和不变的部分分开

之前是把回家的人做分类 现在需求增加 需要更细致的分辨度——回家方式

然后实现回家方式的自我组合

策略模式的核心是 对每种策略进行封装 使之相互交换 Travelable 策略接口 By air ByCoach ByTrain 不同的各种策略实现
而最终 PassengerByAirAndCoach 都是不同策略组合的产物

解决

	public class PassengerByAirByCoach extends People {
   
		private Travelable first;
		private Travelable second;
	public PassengerByAirAndCoach() {
   
		first = new ByAir();
		second = new ByCoach();
	}
	@Override
	protected void travel(){
   
		first.travel();
		second.travel()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值