我对针对接口编程的浅解

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

转载于:https://www.cnblogs.com/zcy_soft/archive/2010/10/03/1841633.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值