新人浅谈实际开发中对于java接口的认知
2017-03-08 21:41
218 查看
说说本人对接口的认知——1.定义开发的规范标准,2.延续代码后期的维护性和扩展性。
1.先说自身对规范标准的认知,我在部门的某次项目开发中,某块业务经过小组讨论分析完后,由我担任组长的位置,我的首要开发任务是将我们探讨完毕的业务进行一个后台功能点的整理,定出一个我们开发的后台接口文档,然后根据接口文档,统一规范的建一个本次业务的接口类,在类中我将所有的功能都定义好了抽象方法,然后再分工下去组员实现。这样做有几点好处:1:取名规范性,杜绝了组员按照自己的风格取类名和方法名。2:提高了开发人员对代码的查找和定位效率(如果不用接口,只是把功能直接分给组员去实现,大家建类建方法各自为营)。3:不会出现哪一个方法没有实现(杜绝组员忘记实现功能点或者偷懒取巧越过功能点)。2.关于维护性和扩展性,举如下例子说明:
模拟一个实际开发中的代码场景,有一个BusinessService普通类,其中定义了一个query()方法,本方法提供某查询业务;有一个客户端类的三个业务方法中都用到了BusinessService的query()方法。
编写代码:
public class BusinessService { public void query(){ System.out.println("执行查询业务"); } public void newQuery(){ System.out.println("执行新的查询业务"); } } public class testClient { BusinessService bs = new BusinessService(); public static void main(String[] args) { testClient tc = new testClient(); tc.getString1(); tc.getString2(); tc.getString3(); } public void getString1(){ bs.query(); } public void getString2(){ bs.query(); } public void getString3(){ bs.query(); } }
以上代码从功能角度来讲没有任何问题,如果某一天,业务部门对需求进行了变更,导致query()方法必须要修改,那么针对如上的代码,开发人员采取两种方案,1:对原有的query()方法直接进行修改(没有谁这么干),2:重新编写一个newQuery()方法来满足新需求。那么这样做了之后上面的testClient类中的三个业务方法也要随之对方法的调用进行修改,将原本的bs.query();改成bs.newQuery()。如下:
public void getString1(){ // bs.query(); bs.newQuery(); } public void getString2(){ // bs.query(); bs.newQuery(); } public void getString3(){ // bs.query(); bs.newQuery(); }
试想,实际开发中,testClient类中可能有几十个业务方法中进行了bs.query()的调用,这样就体现出了代码的维护性和扩展性比较差了。
现在对原业务换成使用接口的代码场景。
//定义BusinessService接口: public interface BusinessService { public void query(); } //BusinessServiceImpl实现接口: public class BusinessServiceImpl implements BusinessService{ public void query() { // TODO Auto-generated method stub System.out.println("执行查询业务"); } }
//如一开始一样,testClient2客户类中三处业务方法中使用query()方法:
public class testClient2 { BusinessService bs = new BusinessServiceImpl(); public static void main(String[] args) { testClient tc = new testClient(); tc.getString1(); tc.getString2(); tc.getString3(); } public void getString1(){ bs.query(); } public void getString2(){ bs.query(); } public void getString3(){ bs.query(); } }
同样某一天,业务部门对需求进行了变更,导致query()方法必须要修改,那么针对如上情况,我们采取建立NewBusinessServiceImpl类,在本类中重新定义query()方法,NewBusinessServiceImpl实现接口。
public class NewBusinessServiceImpl implements BusinessService{ public void query() { // TODO Auto-generated method stub System.out.println("执行新的查询业务"); } }
而在testClient2客户类中,只需要修改一行代码,将BusinessService bs = new BusinessServiceImpl();换成BusinessService bs = new NewBusinessServiceImpl();,客户类中有再多的业务方法调用query()方法,我们也只需要修改一行代码,就解决了业务变更问题,从维护和扩展性角度来看,非常值得。
总结:工作时间一年半,仅对领悟出来的经验进行一个整理和分享,如有不对的地方烦请看到的大神可以指正。。。。
相关文章推荐
- 企业支付宝账号开发接口教程--JAVA-UTF-8(实际操作完善中...SpringMVC+JSP)
- 企业支付宝账号开发接口教程--JAVA-UTF-8(实际操作------SpringMVC+JSP)
- 企业支付宝账号开发接口教程--JAVA-UTF-8(实际操作------SpringMVC+JSP)
- 企业支付宝账号开发接口教程--JAVA-UTF-8(实际操作完善中...SpringMVC+JSP)
- 在实际开发APP项目中JAVA的抽象类和接口怎么用?
- java新人浅谈对于ArrayList的一点理解
- (android 互联网开发)2 访问https接口,进行数据交互(已在实际项目中使用)
- 了解实际开发中 Hashtable 的特性原理 .NET, JAVA, PHP (之一)
- 浅谈java在嵌入式开发中的应用
- 【程序思考】RIA 对于 java 在 web 开发领域是否是一个转机?
- java学习 java中接口运用演示并行开发.....暑假第五天
- 浅谈Java网站开发过程中的优势
- 了解实际开发中 Hashtable 的特性原理 .NET, JAVA, PHP (之二)
- 了解实际开发中 Hashtable 的特性原理 .NET, JAVA, PHP
- 怎么根据linux c/c++ 开发的d-bus服务生成java 的调用接口文件
- 浅谈eMbedded Visual C++4.0对于Windows CE.net 的开发
- 浅谈java web开发中的中文乱码的解决方法
- 【程序思考】RIA 对于 java 在 web 开发领域是否是一个转机?
- 了解实际开发中 Hashtable 的特性原理 .NET, JAVA, PHP (之二)
- 对于初学者学习Java语言的建议-Java基础-Java-编程开发