zoukankan      html  css  js  c++  java
  • 设计模式-策略模式

    策略模式


    如果解决一件事情有很多种方法(算法,策略),用户根据不同的需求去选择不同的方法。这个时候会用到策略模式。我是通过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();
    }
    

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

  • 相关阅读:
    091115 T UI生成的类
    090717 T OOD时的接口
    090713 T 数组不OO
    090723 T Code Generate 的思考
    091101 T IModel
    091018 CH 培训方法论总结
    090615 T 数据库范式
    写程序,逻辑优先!
    091117 T else if 的写法
    091015 CH 培训所想到的
  • 原文地址:https://www.cnblogs.com/luanpeng/p/6646458.html
Copyright © 2011-2022 走看看