zoukankan      html  css  js  c++  java
  • 我对针对接口编程的浅解

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

  • 相关阅读:
    poj3041(最小顶点覆盖)
    High-speed Charting Control--MFC绘制图表(折线图、饼图、柱形图)控件
    hdu 3183 A Magic Lamp(RMQ)
    Android studio 中创建AIDL Service
    cocos2d-x 3.0正式版 cmd创建project以及一键创建project
    【Machine Learning】决策树案例:基于python的商品购买能力预测系统
    【Machine Learning】机器学习及其基础概念简介
    【Machine Learning】Python开发工具:Anaconda+Sublime
    【HanLP】HanLP中文自然语言处理工具实例演练
    【HanLP】资料链接汇总
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/1841633.html
Copyright © 2011-2022 走看看