策略模式(Strategy)

    使用策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数。

    接口:

public interface SortStrategy {
	void Sort();
}

    实现类:

public class QuickSort implements SortStrategy{
	public void Sort() {
		System.out.println("QuickSort!");
	}	
}

public class ShellSort implements SortStrategy{
	public void Sort() {
		System.out.println("ShellSort!");
	}	
}

    调度类:

public class Sort {
	private SortStrategy sortStrategy;
	
	public void SetSortStrategy(SortStrategy sortstrategy){
		this.sortStrategy = sortstrategy;
	}
	
	public void sort(){
		sortStrategy.Sort();
	}
}

简单的测试类:
public class Test {
	public static void main(String[] args) {
		Sort sort = new Sort();
		sort.SetSortStrategy(new QuickSort());
		sort.sort();
	}
}
    策略模式的决定权在用户,系统本身提供不同算法的实现,新增或者删除算法,对各种算法做封装。因此,策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法即可。

你可能感兴趣的:(策略模式(Strategy))