博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linkin大话设计模式--命令模式
阅读量:6820 次
发布时间:2019-06-26

本文共 1318 字,大约阅读时间需要 4 分钟。

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

首先考虑一种应用情况,某个方法需要完成某一个功能,这个功能的大部分功能已经确定了,但是有可能少量的步骤没法确定,必须等到执行这个方法才可以确定。

也就是说,我们写一个方法不仅要求参数可以变化,其中对参数的处理也需要变化,不是写在这个方法的代码逻辑中,是对于这个参数的处理也要传入到这个方法中,那么怎么做呢?命令模式。

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

具体代码如下:

//定义一个接口  这个就是一会要传入下面方法的处理行为 这个接口叫做命令接口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+"\n");                }            }        });        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);            }        });    }}
 
 
 

转载于:https://www.cnblogs.com/LinkinPark/p/5233189.html

你可能感兴趣的文章
Linux IPTABLES 防火墙的设定
查看>>
shell 学习笔记(17)
查看>>
数据仓库架构演进与菜鸟实时数据仓库设计
查看>>
我的友情链接
查看>>
互联网公司应该要有的技术人员配置和开发事项清单
查看>>
我的友情链接
查看>>
Linux更改权限笔记
查看>>
【MySql 大数据量快速插入和语句优化】
查看>>
关于“let: not found”
查看>>
yum安装报错“Error: xz compression not available”
查看>>
Android开发中如何改变RadioButton背景图片和文字的相对位置
查看>>
如何给Linux (Fedora Ubuntu等)安装字体
查看>>
MySQL大小写敏感问题和命名规范
查看>>
java 获取时间 和 转换时间
查看>>
Redis主从复制
查看>>
mysql-5.6.26 主主复制
查看>>
Python-高阶函数
查看>>
SpringMVC权限管理
查看>>
ET120以太网环回器介绍
查看>>
ActiveMQ快速入门
查看>>