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+"\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);
            }
        });
    }
}</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="https://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="https://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>

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是用中文回复: 创建一个类名为myfavor,用于描述你个人喜好的一类东西。该类必须包含至少三个属性,用于描述清楚该爱好。例如,如果你的爱好是音乐,那么你可以定义三个属性:音乐类型、喜欢的歌手、喜欢的歌曲。 此外,该类还必须包含至少两个方法,用于描述你的爱好。例如,你可以定义一个方法来列出你最喜欢的歌曲,还可以定义一个方法来列出你最喜欢的歌手。 最后,该类还必须包含至少两个构造器,用于初始化该类的属性。例如,你可以定义一个构造器来初始化音乐类型和喜欢的歌手,还可以定义另一个构造器来初始化所有属性。 以下是一个示例代码: public class myfavor { private String musicType; private String favoriteSinger; private String favoriteSong; public myfavor(String musicType, String favoriteSinger, String favoriteSong) { this.musicType = musicType; this.favoriteSinger = favoriteSinger; this.favoriteSong = favoriteSong; } public myfavor(String musicType, String favoriteSinger) { this.musicType = musicType; this.favoriteSinger = favoriteSinger; } public void listFavoriteSong() { System.out.println("我最喜欢的歌曲是:" + favoriteSong); } public void listFavoriteSinger() { System.out.println("我最喜欢的歌手是:" + favoriteSinger); } public static void main(String[] args) { myfavor myMusic = new myfavor("流行音乐", "Taylor Swift", "Love Story"); myMusic.listFavoriteSong(); myMusic.listFavoriteSinger(); myfavor myMusic2 = new myfavor("摇滚音乐", "Linkin Park"); myMusic2.listFavoriteSinger(); System.out.println("我的姓名是:XXX"); } } 在上面的代码中,我们定义了一个myfavor类,它有三个属性:音乐类型、喜欢的歌手和喜欢的歌曲。我们还定义了两个方法:listFavoriteSong和listFavoriteSinger,用于列出我们最喜欢的歌曲和歌手。最后,我们还定义了两个构造器,用于初始化该类的属性。 在测试类中,我们创建了两个myfavor对象,分别用于描述我们喜欢的音乐类型、喜欢的歌手和喜欢的歌曲。我们还调用了listFavoriteSong和listFavoriteSinger方法,以列出我们最喜欢的歌曲和歌手。最后,我们输出了我们的姓名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值