zoukankan      html  css  js  c++  java
  • linkin大话设计模式--命令模式

    linkin大话设计模式--命令模式

    首先考虑一种应用情况,某个方法需要完成某一个功能,这个功能的大部分功能已经确定了,但是有可能少量的步骤没法确定,必须等到执行这个方法才可以确定。
    也就是说,我们写一个方法不仅要求参数可以变化,其中对参数的处理也需要变化,不是写在这个方法的代码逻辑中,是对于这个参数的处理也要传入到这个方法中,那么怎么做呢?命令模式。


    不同于js可以在一个方法中参入一个代码块,java中不允许代码块单独存在,因此我们必须把该代码块封装成一个方法,在java中类是一等公民,方法也不能独立的存在,所以我们传入该方法的应该是一个对象,该对象通常是某个接口的匿名实现类的实例,这个接口我们称为命令接口。


    具体代码如下:

    <strong><span style="font-size:14px;">//定义一个接口  这个就是一会要传入下面方法的处理行为 这个接口叫做命令接口
    interface Command{
        public void process(int[] target);
    }
    
    
    public class ProcessArray {
        //这个方法里面的cmd就是一个代码块
        public void each(int[] target,Command cmd){
            cmd.process(target);
        }
        
        public static void main(String[] args) {
            ProcessArray processArray = new ProcessArray();
            int[] target = {1,2,3,4};
            //执行each方法,但是这里的第2个参数不是一个普通的参数,而是一个代码块
            processArray.each(target, new Command(){
                @Override
                public void process(int[] target) {
                    for(int a:target){
                        System.out.println(a+"
    ");
                    }
                }
            });
            processArray.each(target, new Command() {
                @Override
                public void process(int[] target) {
                    int sum = 0;
                    for(int a:target){
                        sum+=a;
                    }
                    System.out.println("sum="+sum);
                }
            });
        }
    }</span></strong>
    <pre name="code" class="java"><pre name="code" class="java"><pre name="code" class="java"><strong><span style="font-size:14px;"><img src="http://img.blog.csdn.net/20141006131515651?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTc5NDIzOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" /></span></strong>

    
    
    <strong><span style="font-size:14px;"><img src="http://img.blog.csdn.net/20141006131623480?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTc5NDIzOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" style="font-family: Arial, Helvetica, sans-serif;" alt="" /></span></strong>

    
    
    
    

  • 相关阅读:
    elk2
    elk
    skywalking学习ppt
    Spring Boot]SpringBoot四大神器之Actuator
    黑马程序员spring data jpa 2019年第一版本
    css总结7:盒子模型理解
    css总结5:px、em、rem区别介绍
    css总结4:input 去掉外边框,placeholder的字体颜色、字号
    css总结3:Flex 布局教程:Flex-demos(转)
    css总结2:Flex 布局教程:Flex 语法(转)
  • 原文地址:https://www.cnblogs.com/LinkinPark/p/5233189.html
Copyright © 2011-2022 走看看