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();
    }
    

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

  • 相关阅读:
    Android 联系人中使用的常量
    Android 获取联系人Uri
    Android 编辑联系人
    Android 删除联系人
    Android 联系人添加
    Android 联系人查询
    CollectionViewMasonryLayout
    centos7搭建redis
    centos7搭建zookeeper
    排序算法
  • 原文地址:https://www.cnblogs.com/luanpeng/p/6646458.html
Copyright © 2011-2022 走看看