写优雅代码之聊一聊接口
来源:互联网 发布:ngrok nat123 知乎 编辑:程序博客网 时间:2024/05/16 01:19
一.常量接口
定义:用java接口来申明一些常量,然后由实现这个接口的类使用这些常量.
运用场景:可以用在app的开发中,比如url,发送的交易上
实现步骤:
1.首先定义一个常量接口
package com.hxl.constant;/** * 只要是实现了这个接口的实现类,都可以继承这些常量 * * @author skythinking 常量接口 */public interface AppConstants {public static final int GOODSDETAILS = 30001;public static final int EVALUATION = 30004;/** 服务器 */public static final String APPURL = "http://www.baidu.com/";}
2.定义一个类实现这个接口,在实现类中就可以直接引用到这些常量
package com.hxl.constant;/** * 实现了AppConstants这个接口,就自动继承了它的常量 * * @author skythinking * */public class AppConstantsImpl implements AppConstants {/** * 测试方法 * * @param args */public static void main(String[] args) {System.out.println("打印在常量接口中定义的AppUrl常量:" + APPURL);System.out.println(GOODSDETAILS);}}
运行结果
打印在常量接口中定义的AppUrl常量:http://www.baidu.com/30001
二.回调接口
定义:用java接口来完成回调工作
运用场景:可以用在框架的设计中(比如该例中,老板让员工干活,但是老板没时间监督,就让员工做完事情通知他一声就成)
实现步骤:
1.定义一个用于回调的接口,并提供回调方法
package com.hxl.callback;/** * 回调的本质:通过接口变量持有实现类的引用,进而调用实现类的方法 * * 此接口为留联系方式用(老板实现该接口,员工通过回调execute()方法,来通知老板干活情况) * * @author skythinking * * */public interface CallBackInterface {// 用这个方法作为老板留下的联系方式,通过回调该方法,可以通知到老板public void execute();}
2.老板类实现回调接口,并实现回调接口中定义的方法
package com.hxl.callback;/** * 老板是作为上层应用身份出现的,下层应用(员工)是不知道 有哪些方法, 因此他想被下层应用(员工)调用必须实现CallBackInterface接口 * * @author skythinking * */public class Boss implements CallBackInterface {@Overridepublic void execute() {System.out.println("老板回答:好的,收到了!!");}}
3.员工类通过持有回调接口,并通过set方法注入老板类的实现,而持有老板类的引用,进而回调到老板类中实现的接口方法
package com.hxl.callback;/** * 员工类,必须要记住,这是一个底层类,底层是不了解上层服务的 ,他必须持有老板的地址(回调接口),即使老板换了一茬又一茬,办公室不变,总能找到对应的老板。 * * @author skythinking * */public class Employee {// 持有老板的地址(即老板对象的引用),这里是向上转型private CallBackInterface callBack = null;/** * 通过set方法注入老板类的实例,进而持有它的引用(也就是注册) * * @param callBack */public void setCallBack(CallBackInterface callBack) {this.callBack = callBack;}// 工人干活public void doSome() {// 1.开始干活了for (int i = 0; i < 10; i++) {System.out.println("员工说:第【" + i + "】事情干完了!");}// 2.告诉老板干完了/** * (这里就是回调了接口的execute()方法 * 而老板实现了CallBackInterface接口,通过setCallBack(CallBackInterface * callBack)注入进来的是老板类, 自然也就调用到老板类中的execute()方法 */if (callBack != null) {callBack.execute();} else {System.out.println("没有通过setCallBack(CallBackInterface callBack)注入实现了CallBackInterface的实现类");}}}
4.写测试类进行测试
package com.hxl.callback;public class Test {public static void main(String[] args) {Employee emp = new Employee();// 员工持有老板对象的引用(注册)emp.setCallBack(new Boss());// 开启控制器对象运行emp.doSome();}}
运行结果:
员工说:第【0】事情干完了!员工说:第【1】事情干完了!员工说:第【2】事情干完了!员工说:第【3】事情干完了!员工说:第【4】事情干完了!员工说:第【5】事情干完了!员工说:第【6】事情干完了!员工说:第【7】事情干完了!员工说:第【8】事情干完了!员工说:第【9】事情干完了!老板回答:好的,收到了!!
接口回调扩展知识:
1.在我们用一些开源框架的时候,当框架不能满足需求,我们想让框架来调用自己的类方法,怎么做呢?
总不至于去修改框架吧.许多优秀的框架提几乎都供了相关的接口,我们只需要实现相关接口,即可完成了注册.
然后在合适的时候让框架来调用我们自己的类
2.为了使我们写的项目接近完美,就把一部分功能外包给别人,让别人个性化定制,至于别人怎么实现不管,我唯一要做的就是定义好相关接口,这一设计允许了底层代码调用高层定义的方法,增强程序灵活性.
0 0
- 写优雅代码之聊一聊接口
- 写优雅代码之聊一聊接口2
- 写优雅代码之聊一聊接口3
- 写优雅代码之聊一聊抽象类
- 写优雅代码之聊一聊继承
- 写优雅代码之聊一聊多肽
- 写优雅代码之聊一聊继承2
- 写优雅代码之聊一聊抽象类2
- 写优雅代码之学习资源
- 写优雅代码之容器思想
- 写优雅代码之阅读spring源码
- 【高效代码调错系列之代码规范】——写优雅的代码
- android mvp分层架构优雅写代码
- PHPer这样写代码也许更优雅
- 如何优雅的写好Pythonic代码?
- less:优雅的写CSS代码
- 代码这样写更优雅(Python版)
- for_each + lambda 优雅的写代码
- ecplice断点不能运行,断点是带斜杠的
- Redis的三种启动方式与检测运行情况
- 第十六天
- TCP/IP源码学习(53)——TCP的连接过程的实现(2)
- es的java bulk load
- 写优雅代码之聊一聊接口
- [POJ 3070] Fibonacci (矩阵快速幂)
- 如何使用gyp管理c++工程(ubuntu版)【转】
- 省考,国考到底有哪些不同
- 协程(一)协程的定义与分类
- leetcode 题解 2. Add Two Numbers
- 栈和队列复习题
- Android自定义环状进度条(带加载动画效果)
- visual studio配置OpenCL开发环境