新人浅谈实际开发中对于java接口的认知
来源:互联网 发布:一个网站几个域名 编辑:程序博客网 时间:2024/06/05 15:04
说说本人对接口的认知——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接口的认知
- java新人浅谈对于ArrayList的一点理解
- 黑马程序员- 对于java的认知
- 对于java中接口的理解
- 新人对于java异常的理解
- 对于webpack的认知
- 浅谈对Java内存的一些认知
- 浅谈Java中接口
- Java中接口的实际应用:指定操作的标准
- java中如何理解继承和接口的实际用途
- 对于java反射的一些学习理解和认知
- 对于Fragment的一点认知
- 对于发票的简单认知
- 对于list集合的认知
- 新人对于学习java培训的一点见解
- 在java项目的实际开发和应用中
- java中BigDecimal数据类型的认知
- 对Java中关键字的认知
- Codeforces Round #402 (Div. 1) D. Parquet Re-laying(脑洞)
- DTE与DCE
- 系统调用及用户编程接口(API)
- 3月7号
- 微信小程序版翻牌游戏
- 新人浅谈实际开发中对于java接口的认知
- 面试题目
- 11、centos6虚拟机简单安装mysql5.7
- CXF拦截器
- 四,angular服务
- C++第二次试验--选择循环结构(项目4,项目5)
- Linux堆内存管理深入分析(上)
- 3月8号
- C++浅谈组合和继承