设计模式-策略模式

策略模式


如果解决一件事情有很多种方法(算法,策略),用户根据不同的需求去选择不同的方法。这个时候会用到策略模式。我是通过Head First这本书学习的设计模式,策略模式被看做为整本书的入门章节,可以看出策略模式在一定的意义上还是比较好理解的。

例子

举一个现实中的例子来说吧~

比如我们上完课,老师让交报告,完成报告的方式有几种,手写报告、打印报告、演讲报告。对于这个例子我们怎样用策略模式实现呢?

设计类

差一句嘴,设计模式的原则:一定是面向接口编程,而非面向实现编程。
首先是设计接口类:

 public interface IReport{
 	public void submit();
 }

然后是实现三种提交方式:

 public class HandReportImpl implements IReport{
    
     	@Override
     	public void submit(){
     		//手写报告,直接提交
     	}	
 }
 public class PrintReportImpl implements IReport{
 	@Override
 	public void submit(){
 		//打印报告,再提交
 	}	
 }
  public class SpeechReportImpl implements IReport{
 	@Override
 	public void submit(){
 		//上台演讲
 	}
	
 }

然后就是我们要上的这门课了~

 public class DesignPattern{

 	private IReport report;
 	public DesignPattern(){}
 	// 你可以直接选择通过哪种方式提交
 	public DesignPattern(IReport report){
 		this.report = report;
 	}
 	public void setReportWays(IReport report){
		this.report = report; 	
 	} 
 	public void submit(){
 		this.report.submit();
 	}

 }

我们可以写一个main方法测试一下这个策略模式:

public static void main(String... args){
	DesignPattern dp;
	dp = new DesignPattern(new HandReportImpl());
	dp.submit();
	dp.setReportWays(new SpeechReportImpl());
	dp.submit();
}

这样最简单的一个策略模式就完成了~~

posted @ 2017-03-30 15:32  天驰  阅读(133)  评论(0编辑  收藏  举报