对接口编程的简单理解

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

第二,你还要用类似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>

只有一条路不能选择——那就是放弃的路;

对接口编程的简单理解

相关文章:

你感兴趣的文章:

标签云: