针对接口编程的浅解

原创|其它|编辑:郝浩|2009-04-02 08:59:12.000|阅读 383 次

概述:首先,使用接口编程是为了提高程序的可维护性和可伸缩性。如果你在一个类里使用组合调用另一个类时,你直接使用另一个具体的类,这样的话你就不这个类写死了,以后假如业务逻辑变化时,你就必须修改原代码。你如果写的是一个接口,当业务逻辑变化时你只需写一个新的类让他实现这个接口。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

首先,使用接口编程是为了提高程序的可维护性和可伸缩性。如果你在一个类里使用组合调用另一个类时,你直接使用另一个具体的类,这样的话你就不这个类写死了,以后假如业务逻辑变化时,你就必须修改原代码。你如果写的是一个接口,当业务逻辑变化时你只需写一个新的类让他实现这个接口。

   第二,你还要用类似spring这样的东西,实现松耦合,利用配置文件修改程序。比如要完成一个登录功能:

   我先写dao层,其中用到了4个类,

 DaoBase.java,用来得到user对象 

    package com.ssh2demo.dao;

import com.ssh2demo.domain.User;

public abstract class DaoBase {

private User user;

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

}
IUserDao.java,一个接口,用来封装登录的方法
public interface IUserDao {
public void insertUser();

public boolean getUserByName(String name);//如果返回true代表登录成功
}
IUserDao的实现类UserDaoImp.java
package com.ssh2demo.dao;

import com.ssh2demo.domain.User;

public class UserDaoImp extends DaoBase implements IUserDao{
//..插入一个user
User user = new User();
public void insertUser(){
user.setAge(23);
user.setName("hth");
user.setPassword("123456");
}

public boolean getUserByName(String name){
insertUser();
if(user.getName().equals(name))
return true;
else
return false;
}
}

UserDaoDeco.java这个类继承了UserDaoImp,用来向spring文件里注入
<bean id="userDaoDeco" class="com.ssh2demo.dao.UserDaoDeco"></bean>
<bean id="userServiceImp" class="com.ssh2demo.service.UserServiceImp">
<property name="userDaoDeco">//此处其实这步的属性可以直接放接口,注入的类放实现类就                             //可以
<ref bean="userDaoDeco"/>
</property>
</bean>
UserDaoDeco.java
package com.ssh2demo.dao;

import com.ssh2demo.dao.UserDaoImp;

public class UserDaoDeco extends UserDaoImp{

} 

   然后写service层,service层用了一个工厂类和工厂接口,用来管理service类,这样写方便了在action里我只要注入工厂类就可以了,所有的service我都可以通过工厂获得 

    <bean id="loginAction" class="com.ssh2demo.struts2.LoginAction" singleton="false">
<property name="service">//此处放一个接口,直接让action不关心类的具体实现,实现了松耦合
//使程序易于改动,做到了新加而不是修改。
<ref bean="serviceFactory"/>
</property>
</bean>


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:BlogJava

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP