接口回调机制详解

1 篇文章 0 订阅
  • 在一个类中进行接口定义和调用接口中的方法
    public class Topbar {
    	
    	//需要一个变量来映射调用者传进来的一个接口
    	private topbarClickListner listener;
    	
    	//定义一个接口
    	public interface topbarClickListner{
    		//定义leftButton的点击事件
    		public void leftButtonClick();
    		//定义rightButton的点击事件
    		public void rightButtonClick();
    	}
    	
    	//暴露一个方法给调用者。调用者可以把接口的实现以匿名内部类的方式(或者实现接口的类的对象)传递进来
    	public void setOnTopbarClickListener(topbarClickListner listener){
    		this.listener=listener;//这样调用者就和模板联系在一起
    	}
    	
    	Button leftButton=(Button)findViewById(R.id.left_button);
    	Button rightButton=(Button)findViewById(R.id.right_button);
    	//修改点击事件,不在点击事件中进行具体的逻辑实现,而是调用接口引用的方法
    	leftButton.setOnClickListener(new OnClickListener(){
    		@Override
    		public void onClick(View v){
    			listener.leftButtonClick();		}
    	});
    	rightButton.setOnClickListener(new OnClickListener(){
    		@Override
    		public void onClick(View v){
    			listener.rightButtonClick();
    		}
    	});
    	//该类不关心具体的点击事件的实现,具体的实现而是交给调用者来决定,这里接口更像是一种引用
    }

  • 在另一个类中进行点击事件的具体实现
    public class MainActivity extends Activity{
    	protected void onCreate(Bundle savedInstanceState){
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		Topbar topbar=(Topbar)findViewById(R.id.topbar);
    		
    		//把一个接口的实现以匿名内部类的方式传递进来		
    		topbar.setOnTopbarClickListener(new topbarClickListner(){
    			@Override
    			public void leftButtonClick() {
    				//添加点击事件的具体实现
    				Toast.makeText(MainActivity.this, "left", Toast.LENGTH_SHORT).show();				
    			}
    
    			@Override
    			public void rightButtonClick() {
    				Toast.makeText(MainActivity.this, "left", Toast.LENGTH_SHORT).show(); 					
    			}
    			
    		});
    		
    	}
    }

  • 接口回调机制就是接口定义与实现的分离(或者是定义,实现,调用的分离(例如切换摄像头博客)),定义的时候更像是一种引用,只是说明有这样一种方法,但是没有具体的方法体,只有在需要实际调用该方法的时候才对方法进行补全,这样更利于功能的模块化实现,即在需要修改功能的时候,只需要在调用处进行逻辑修改就可以了,而封装接口的模块不需要改动。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值