• 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>

    
    
    
    

  • 相关阅读:
    ZOJ 3713 In 7-bit (题意不好理解,十进制、二进制、十六进制的转换问题)
    C++ cout 如何保留小数输出
    ZOJ 3705 Applications 模拟
    Google Code Jam Round 1A 2015 Problem B. Haircut 二分
    --算法分析与设计--课程作业--【顺序统计】--【采用链表法散列表】--【开放地址法(双重散列)】
    C++获取当前时间和计算程序运行时间的方法
    【STL__set_的应用】
    ZOJ 3601 Unrequited Love 【STL__pair_的应用】
    Linux概念
    fragment创建
  • 原文地址:https://www.cnblogs.com/LinkinPark/p/5233189.html
Copyright © 2020-2023  润新知