隨筆-199  評論-203  文章-11  trackbacks-0
          首先,使用接口編程是為了提高程序的可維護性和可伸縮性。如果你在一個類里使用組合調用另一個類時,你直接使用另一個具體的類,這樣的話你就不這個類寫死了,以后假如業務邏輯變化時,你就必須修改原代碼。你如果寫的是一個接口,當業務邏輯變化時你只需寫一個新的類讓他實現這個接口。
                第二,你還要用類似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>
          posted on 2009-04-01 08:16 Werther 閱讀(1777) 評論(0)  編輯  收藏 所屬分類: 10.Java
          主站蜘蛛池模板: 宝应县| 谢通门县| 重庆市| 泽库县| 乐至县| 海盐县| 崇礼县| 仙居县| 临澧县| 甘孜县| 临桂县| 广宗县| 延庆县| 五峰| 普洱| 神木县| 莎车县| 萨嘎县| 四会市| 鄂托克前旗| 前郭尔| 武鸣县| 桐柏县| 西青区| 自贡市| 宁晋县| 惠水县| 襄汾县| 延安市| 霍山县| 三穗县| 泊头市| 涡阳县| 古蔺县| 奇台县| 洛南县| 吉木乃县| 图木舒克市| 淮安市| 安徽省| 郎溪县|