随笔-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 阅读(1772) 评论(0)  编辑  收藏 所属分类: 10.Java

只有注册用户登录后才能发表评论。


网站导航:
 

I'm reading...

Java 60

Head  First SQL

宝贝连接


If you need these books,pls send me emails.
Email:kunpeng.niu@163.com
<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

留言簿(10)

随笔分类(178)

随笔档案(208)

文章档案(1)

新闻档案(6)

相册

1.Java Official Website

2.Java Study Website

3.Java Technic Website

4.Java Video Website

5.Database Website

6.Bookshop Website

7.English Website

8.Friends Link

9.Other Web

积分与排名

  • 积分 - 683785
  • 排名 - 67

最新评论

阅读排行榜

评论排行榜