JAVA中一个接口多个实现类时如何判定。

例子:

1. 直接new一个实例,这样肯定知道用的哪个实例
2. 定义接口类型的变量,用某个实例去初始化。。。这样也是肯定知道用的哪个实例

一般我们用第二种方式有一个好处,如果以后要改动,那么只需要修改其引用的实例,改动较少!

举个例子:A接口,A1,A2,A3实现A接口,有一个eat方法,A1:吃饭,A2:吃鱼,A3:吃肉

需要得到"吃肉",那么 A a = new A3();
需要得到"吃饭",那么 A a = new A1();
二、看代码发现的例子:

接口:
public interface CsBaseService {
//获得总记录条数
public int getTotalCount(JDBCBean jdbcBean);
}

实现类1:
@Service
public class CsLastUpdateService implements CsBaseService {

    @Override
    public int getTotalCount(JDBCBean jdbcBean) {
        return 0;
    }
   
}

实现类2:

 public class CsRelateModelService implements CsBaseService {

    @Override
     public int getTotalCount(JDBCBean jdbcBean) {
         return 2;
    }

}

调用的时候:

public class RelateModelController  extends BaseController{

       @Autowired
       private CsRelateModelService relateModelService;//自动装配实现类2

       initParamProcess(relateModelService,new RelateModel(),new Page());//初始化实现类2,关键在这步,指定relateModelService为beaseService,具体见BaseController类
       int totalCount = beaseService.getTotalCount(jdbcBean);//然后直接调用实现类2的方法,输出为2

}
RelateModelController 的父类BaseController
public abstract class BaseController {

        void initParamProcess(CsBaseService beaseService, JDBCBean jdbcBean,
 Page page) {
this.beaseService = beaseService;  //指定哪个实现类为beaseService
this.jdbcBean = jdbcBean;
this.page = page;
}

}

发布了6 篇原创文章 · 获赞 3 · 访问量 5611

猜你喜欢

转载自blog.csdn.net/ToDreamOfPeple/article/details/87270381
今日推荐