Java 接口作为方法参数

9 篇文章 0 订阅

一’Java 接口作为方法参数好处:

1 可以很方便封装起来,供调用者使用;

2 参数为接口类型可以实现代码解耦;

3 对调用者而言, 无需关心内部构造逻辑 , 只要实现调用相关方法 实现自己的下部逻辑即可,做到开箱即用的效果;

4 我们翻看jdk源码发现大量这样应用的代码;

...........................

下面我们就举例实现说明 

二 什么是接口作为方法参数

用户人 基类 ,方法应用时候用到
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;


/**
 * 用户人 基类
 */

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Person {


    /**
     * 名字
     */
    private String name;

    /**
     * 年龄
     */

    private Integer age;
    /**
     * 语言
     */
    private String lange;



}


/**
 *说话接口
 */
public interface Speak {

    void speackByLange(String name, String lange);

    void speakNull();


}

 

抽象实现类


import lombok.extern.slf4j.Slf4j;

/**
 * 说话抽象类
 */
@Slf4j
public abstract class DoSpeak implements Speak{


    @Override
    public void speackByLange(String name, String lange) {

        log.info( name + "do " + lange);

    }

    @Override
    public void speakNull() {

        log.info("speck null ...");

    }
}

工作类 主要

import lombok.extern.slf4j.Slf4j;

/**
 * 工作 处理用户做接口的关系处理 这里直接引用实体的name, lanage  在实际使用中
 * 可以 有其他处理逻辑 如 加密解密,记录日志 , 以及转换算法 这里就简单处理了。。。
 */
@Slf4j
public class Work {

    public void doOk(Person person, Speak speak) {

        if (person != null) {

            log.info("person:" + person.toString());
            speak.speackByLange("(name)" + person.getName(), "(lange)" + person.getLange());
        } else {

            log.info("person is null");
            speak.speakNull();

        }






    }


}

 

测试类 说明:

//重写抽象方法 ,然后具体做什么事情, 重写了两种方法, 一种是person不为空的情况
//另一种是person 为空的情况, 这样我们就封装了person和 speak的内部关系, 直接重写
//speack接口的方法, 来实现我们具体的需求
//在实际应用中,可能要重写 success方法和fail方法,这里只是简单重写一下

public class Test001 {


    public static void main(String[] args) {

        Person person = Person.builder().name("tom").age(12).lange("chinese").build();
        Work work = new Work();
        work.doOk(person, new DoSpeak() {
            @Override
            public void speackByLange(String name, String lange) {
                System.out.println("名字:" + name + " can speak " + lange);
            }
            @Override
            public void speakNull() {
                System.out.println("speack  is null "  );

            }
        });
    }

执行结果如下:

 

 

 

 

 

 

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值