計(jì)算機(jī)二級Java教程:針對接口編程的淺解

字號(hào):

首先,使用接口編程是為了提高程序的可維護(hù)性和可伸縮性。如果你在一個(gè)類里使用組合調(diào)用另一個(gè)類時(shí),你直接使用另一個(gè)具體的類,這樣的話你就不這個(gè)類寫死了,以后假如業(yè)務(wù)邏輯變化時(shí),你就必須修改原代碼。你如果寫的是一個(gè)接口,當(dāng)業(yè)務(wù)邏輯變化時(shí)你只需寫一個(gè)新的類讓他實(shí)現(xiàn)這個(gè)接口。
    第二,你還要用類似spring這樣的東西,實(shí)現(xiàn)松耦合,利用配置文件修改程序。比如要完成一個(gè)登錄功能:
    我先寫dao層,其中用到了4個(gè)類,
    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,一個(gè)接口,用來封裝登錄的方法
    public interface IUserDao {
    public void insertUser();
    public boolean getUserByName(String name);//如果返回true代表登錄成功
    }
    IUserDao的實(shí)現(xiàn)類UserDaoImp.java
    package com.ssh2demo.dao;
    import com.ssh2demo.domain.User;
    public class UserDaoImp extends DaoBase implements IUserDao{
    //..插入一個(gè)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這個(gè)類繼承了UserDaoImp,用來向spring文件里注入
    
    
    //此處其實(shí)這步的屬性可以直接放接口,注入的類放實(shí)現(xiàn)類就 //可以
    
    

    

    UserDaoDeco.java
    package com.ssh2demo.dao;
    import com.ssh2demo.dao.UserDaoImp;
    public class UserDaoDeco extends UserDaoImp{
    }
    然后寫service層,service層用了一個(gè)工廠類和工廠接口,用來管理service類,這樣寫方便了在action里我只要注入工廠類就可以了,所有的service我都可以通過工廠獲得
    
    //此處放一個(gè)接口,直接讓action不關(guān)心類的具體實(shí)現(xiàn),實(shí)現(xiàn)了松耦合
    //使程序易于改動(dòng),做到了新加而不是修改。