设计模式之(一)——策略模式(Strategy Pattern)

博客差不多半年没动了,换了工作之后,面试过程中,知道了自己有哪些不足。不过都是记录在笔记上。还有个人对工作的一些思考,习惯的调整, 方向的确定等等。


设计模式会问,其实更会用,深入框架的话,这算一个基础。设计模式在博客被人写烂了。不过我还是要继续写,我笔记也记过,不过零零散散,不系统。还有重新定下心好好看书。决定慢慢地把这个系列写出来。读的是Head First的设计模式。


开篇的鸭子就是策略模式。模式这种东西不应该自己想死。而是多思考,为什么那样不行,那样写死有什么坏处。以后拓展会怎样。多思考,还是多思考。


以平时上班交通工具为例:

/**
 * @author Administrator
 * 上班交通工具的接口
 */
interface WorkVehicle {
	void go();
}

/**
 * @author Administrator
 * 地铁
 */
public class Subway implements WorkVehicle{
	@Override
	public void go() {
		System.out.println("too many people!");
	}

}

public class Walk implements WorkVehicle{
	@Override
	public void go() {
		System.out.println("too far!");
	}

}


/**
 * @author Administrator
 * 一个程序员日常上班
 */
public class Programmer {
	public WorkVehicle vehicle;

	public WorkVehicle getVehicle() {
		return vehicle;
	}

	public void setVehicle(WorkVehicle vehicle) {
		this.vehicle = vehicle;
	}
	
	public void feeling(){
		vehicle.go();
	}
	
	public static void main(String[] args) {
		Programmer you = new Programmer();
		you.setVehicle(new Walk());
		you.feeling();
		you.setVehicle(new Subway());
		you.feeling();
	}
}


策略模式定义了算法族,封装之后能够相互替换。让算法的变化独立于使用算法的客户。

相当于定义了多种交通方式,程序员相当于使用它的客户。可以替换不同的交通方式。

缺点很明显:就是你首先必须知道有哪些实现方式。而不是单单调用一个方法,系统会智能的帮你安排最完美的交通工具。

优点是比继承更好的方式,当交通方式除外还有买什么早餐这个东西的时候,你能将不同的东西组合在一起。具有很大的弹性。


你在翻外国的书籍的时候会发现一个很特别的特点,技术人员不是特别的呆板。各种搞怪卖萌。技术是一件很酷的东西,很庆幸一直以来能保持着这股热情。所以需要继续追寻下去。今天的策略模式比较简单,我们暂时就到这里~

猜你喜欢

转载自blog.csdn.net/iaiti/article/details/74937031
今日推荐