策略模式

一、定义:定义一组算法,将每个算法都分装起来,并且使它们之间可以互换。Define a family of algorithms, encapsulate each one, and make them interchangeable.

策略模式分装了算法,使用算法为了达到一个目的,但是过程不同。正如条条大路通罗马,随你换那条路走。

二、简单代码示例

public abstract class Stratege {
	abstract void getoRoman();
}
public class Way1 extends Stratege {

	@Override
	void getoRoman() {
		// TODO Auto-generated method stub
		System.out.println("我走水路,从渤海触发,经过太平洋,印度洋,大西洋到欧洲,然后在地中海洗个澡,最后到罗马");
	}

}
public class Way2 extends Stratege {

	@Override
	void getoRoman() {
		// TODO Auto-generated method stub
		System.out.println("我从西藏出发,沿着丝绸之路,经过斯坦一族,溜过中东地区到达欧洲,在爱琴海渡过周末,到达罗马");
	}

}
public class Main {


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Stratege way1 = new Way1();
		Stratege way2 = new Way2();


		getRoman(way1);
		getRoman(way2);
	}


	private static void getRoman(Stratege way) {
		way.getoRoman();
	}
}
我走水路,从渤海触发,经过太平洋,印度洋,大西洋到欧洲,然后在地中海洗个澡,最后到罗马
我从西藏出发,沿着丝绸之路,经过斯坦一族,溜过中东地区到达欧洲,在爱琴海渡过周末,到达罗马

策略模式的算法可以自由切换,由其他模块决定使用什么样的策略,策略的扩展十分方便,只要实现接口就可以了。策略模式需要暴漏策略给调用者,可以通过工厂模式来防止策略的暴漏,调用者只要提供一个策略的名称即可使用该策略。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值