创建接口并实现它而不是在 Spring 启动中在控制器中执行所有代码有什么优势?



如下

package com.levent.consultantapi.service;
import java.util.List;
import com.levent.consultantapi.model.Consultant;
public interface ConsultantService {

List<Consultant> getConsultants();
Consultant createConsultant(Consultant consultant);
Consultant getConsultantById(Long id);
Consultant updateConsultantById(Long id, Consultant consultant);
Consultant deleteConsultantById(Long id);
}


package com.levent.consultantapi.service.consultant.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.levent.consultantapi.model.Consultant;
import com.levent.consultantapi.repository.ConsultantRepository;
import com.levent.consultantapi.service.ConsultantService;
@Service
public class ConsultantServiceImpl implements ConsultantService {

@Autowired
private ConsultantRepository consultantRepository;

@Override
public List<Consultant> getConsultants() {
return consultantRepository.list();
}
@Override
public Consultant createConsultant(Consultant consultant) {
return consultantRepository.create(consultant);
}
@Override
public Consultant getConsultantById(Long id) {
return consultantRepository.get(id);
}
@Override
public Consultant updateConsultantById(Long id, Consultant consultant) {
return consultantRepository.update(id, consultant);
}
@Override
public Consultant deleteConsultantById(Long id) {
return consultantRepository.delete(id);
}
}

这样做的好处是什么?我们可以在没有仅接口服务类的情况下做到这一点?
在控制器中执行所有代码是怎么回事?

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

在java中,抽象可以借助接口和抽象类来实现。所以使用接口的主要原因是为了实现抽象。

现在让我们假设您正在编写一个api(可能是支付网关api或其他(,它将被您公司以外的其他公司或开发人员使用。因此,现在您不能向它们显示/共享您的实现类(实际代码(。你会分享你的界面方法,他们会利用它。就这样。

以电视遥控器为例,电视遥控器的开发人员只是为我们提供了一些按钮,如音量增大、减小、下一步等。这些按钮的工作原理并不是我们头疼的问题。

希望这个答案会有所帮助。

最新更新