interface在大型项目中的使用心得



                                                                                                           interface在大型项目中的使用心得

          在学校接触的都是一些小项目,感觉用不用interface都无所谓,因为不用interface我换一种方法我一样可以实现,所以就导致了只知道接口是做什么的,但置于怎么应用到项目中,在什么情况下使用接口,就摸不到头了,到公司后慢慢知道,一个项目中太大了,或许一些你写的工具类在基础库下的十多个应用都要使用,然后每个人再去直接使用它,而各个应用在使用的时候其情况要根据自己的应用有微小的差异,那怎么办?难道是每个应用中都去写一遍?这样就会造成代码的冗余,混乱,各个应用中的风格不统一,最后导致整个系统整合后风格各异,那么为了解决这种情况,用一个小的异步工具类举例说明一下,一个懂了,以后所有的用的时候也差不多,都懂了:

首先在interfaces包下定义一个接口:


public interface downinterfaces {
 public void show();
}

这个show();中就可以根据你的个人业务去实现需要实现的接口了的方法,或者在进行扩展

然后在uitl包下定义一个下载工具类:

package com.uitl;

import com.downinterfaces;

import android.os.AsyncTask;

public class download extends AsyncTask<String, String, String>{
	public downinterfaces downinterfaces;
	public download(downinterfaces downinterfaces) {
		// TODO Auto-generated constructor stub
		this.downinterfaces=downinterfaces;
	}
	@Override
	protected String doInBackground(String... params) {
		// TODO Auto-generated method stub
		String url=params[0];
		/**
		 * 下载操作
		 */
		String image="";//下载后得到的东西
		return image;
	}
	@Override
	protected void onPostExecute(String result) {
		// TODO Auto-generated method stub
		super.onPostExecute(result);
		downinterfaces.show();
	}

}

这个是一个很常见的下载异步类,构造方法中去得到使用者传来的downinterfaces,我们大多的下载都差不多,doInBackground中的请求网络大同小异,但不能是做项目的时候项目组中所有的人都去写一下这个类,那么可能的结果就是个个人用的请求的方法不一样,可能是HttpClient,HttpConnection,用的框架不一样,那个进度条也是五花八门,最后整合一个系统的时候问题就大了,就像我们见过的米ui他不可他的米聊中采用一种方法访问网络,自定义一种进度条,咨询中有时一种访问方式,在自定义一种进度条,这样感觉这个系统就怪怪的了,风格不一;这样,我们这里在onPostExecute中打算实现接口downinterfaces中的show()方法,自己定义自己界面中的要显示的东西;

再看调用的时候在activity中:

public class MainActivity extends ActionBarActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  new download(new downinterfaces()).execute("url");
 }
 public class downinterfaces implements com.downinterfaces{

  @Override
  public void show() {
   // TODO Auto-generated method stub
   /**
    * 各个程序自定义
    */
  }
  
 }

}

这里我们每次使用的时候就需要实现downinterface这个接口中的show()方法,那么这样在各个应用中我们传入相应的url,ui自定义那么基本所有的应用都可以用这个,扩展性一下子提高了,不用没人开发者都去写这个异步类,以此类推,接口的使用的地方就可以找到了,特别是在一下大型项目中接口的优势显的尤为重要

   接口和抽象类的对比:接口和抽象类差不多,也有一些区别,首先实现接口的类必须都实现接口中的方法,而抽象类不是这样的,比较自由,让子类强制执行的可以定义成抽象方法,不执行的可以在父类中定义执行方法,这里抽象类感觉更好,更容易扩展;其次抽象类只能单继承,而一个类可以实现多个接口,此时感觉接口更胜一筹;于是就有了一个缺省适配模式

例子:找了段代码解释一下,免得忘了

package  cn.edu.ynu.sei.defaultAdapter;

/**
 * 接口A<br>
 * 这个接口有5个方法,f1~f5
 * 
 * 
@author  88250
 * 
@version  1.0.0, 2007-8-31
 
*/
public   interface  InterfaceA
{
    
public   void  f1();

    
public   void  f2();

    
public   void  f3();

    
public   void  f4();

    
public   void  f5();
}


package  cn.edu.ynu.sei.defaultAdapter;

/**
 * 缺省的适配器角色<br>
 * 这个抽象类为<code>InterfaceA</code>提供了默认实现
 * 
 * 
@author  88250
 * 
@version  1.0.0, 2007-8-31
 
*/
public   abstract   class  AdapterC  implements  InterfaceA
{

    @Override
    
public   void  f1()
    {
    
//  TODO Auto-generated method stub

    }

    @Override
    
public   void  f2()
    {
    
//  TODO Auto-generated method stub

    }

    @Override
    
public   void  f3()
    {
    
//  TODO Auto-generated method stub

    }

    @Override
    
public   void  f4()
    {
    
//  TODO Auto-generated method stub

    }

    @Override
    
public   void  f5()
    {
    
//  TODO Auto-generated method stub

    }

}


package  cn.edu.ynu.sei.defaultAdapter;

/**
 * 继承于<code>AdapterC</code>,并覆写了f1()
 * 
 * 
@author  88250
 * 
@version  1.0.0, 2007-8-31
 
*/
public   class  ClassB  extends  AdapterC
{
    @Override
    
public   void  f1()
    {
    
//  覆写实现
    }
}





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值