当前位置: 首页 > wzjs >正文

网站建设公司在哪里anker 网站谁做的

网站建设公司在哪里,anker 网站谁做的,濮阳中强网站建设,友情链接交易网站问题:service 和 多个serviceimpl 分层之间的逻辑关系? 好的!用班级活动的例子继续讲,假设班长(Service接口)要管理多种任务,而不同的班委(ServiceImpl实现类)负责不同场…

问题:service 和 多个serviceimpl 分层之间的逻辑关系?

好的!用班级活动的例子继续讲,假设班长(Service接口)要管理多种任务,而不同的班委(ServiceImpl实现类)负责不同场景的实现。这样分层后,代码会更灵活、易扩展!👇


场景设定

班级要组织一次 ‌「秋游活动」‌,班长(Service接口)定规则:

  • 必须有一个方法 planTrip() 用来规划路线
  • 必须有一个方法 calculateCost() 用来计算费用

但根据 ‌不同出行方式‌(比如步行、坐大巴),劳动委员和文艺委员分别写了两种实现!


1. Service接口(班长定的规则)

 

javaCopy Code

public interface TripService { String planTrip(); // 规划路线 double calculateCost(); // 计算费用 }


2. ServiceImpl实现类1:步行方案(劳动委员写的)

 

javaCopy Code

@Service("walkingTripService") // 给实现类起个名字,方便区分 public class WalkingTripServiceImpl implements TripService { @Override public String planTrip() { return "路线:学校 -> 公园(步行30分钟)"; } @Override public double calculateCost() { return 0; // 步行不需要费用 } }


3. ServiceImpl实现类2:大巴方案(文艺委员写的)

@Service("busTripService") public class BusTripServiceImpl implements TripService { @Override public String planTrip() { return "路线:学校 -> 山区(大巴1小时)"; } @Override public double calculateCost() { return 500; // 大巴租车费用 } }


关键问题:Controller 如何选择不同的实现?

就像班级要决定最终用哪种方案,可以通过两种方式:


方式1:用 @Qualifier 指定具体实现

在 Controller 中明确告诉 Spring 要注入哪个实现类:

@RestController

public class TripController {

@Autowired

@Qualifier("busTripService") // 指定用大巴方案

private TripService tripService;

@GetMapping("/plan") public String getPlan() { return tripService.planTrip(); } }


方式2:用 @Primary 标记默认实现

如果大部分情况用步行,可以设一个默认实现:

@Service("walkingTripService")

@Primary // 默认选这个 public class WalkingTripServiceImpl implements TripService { // ... 同上 }

Controller 中不指定时,自动用 @Primary 的实现:

@Autowired private TripService tripService; // 默认注入 WalkingTripServiceImpl


多个 ServiceImpl 的优势

就像班级可以灵活切换方案,代码也能动态调整!

  1. 按需切换‌:

    • 根据配置选择实现(比如测试环境用步行,生产环境用大巴)

    # application.yml school: trip-type: bus

  2. 扩展方便‌:

    • 如果新增「骑自行车」方案,只需写 BikeTripServiceImpl,其他代码不用改!
  3. 逻辑隔离‌:

    • 大巴的费用计算和步行完全不同,分开实现更清晰

实际应用场景

场景1:支付方式多样化
  • 接口:PaymentService
  • 实现类:
    • AliPayServiceImpl(支付宝)
    • WeChatPayServiceImpl(微信支付)
    • BankCardServiceImpl(银行卡)

Controller 根据用户选择调用不同实现:

// 根据用户选择的支付方式,动态注入对应的

ServiceImpl String paymentType = "wechat";

PaymentService paymentService = getPaymentService(paymentType); paymentService.pay(100);


场景2:数据库多版本支持
  • 接口:UserRepository
  • 实现类:
    • MySQLUserServiceImpl(连接 MySQL)
    • MongoDBUserServiceImpl(连接 MongoDB)

通过配置文件切换数据库:

yamlCopy Code

# application.yml database: type: mongodb


总结:Service 和多个 ServiceImpl 的关系就像「总规则和具体方案」

  • 📜 ‌Service接口‌:定义「必须做什么」(What)
  • 🛠 ‌ServiceImpl实现类‌:定义「具体怎么做」(How)
  • 🎛 ‌Controller‌:根据需求选择「用哪种实现」

这样设计后,班级活动(项目)既能保证统一规则,又能灵活适应各种变化! 🌟

http://www.dtcms.com/wzjs/800054.html

相关文章:

  • 国内最大ae模板下载网站网站做发
  • 赣州网站优化推广网站快速被收录
  • 简单的网站类型有哪些内容小程序雀神麻将开挂视频
  • 云南seo网站关键词优化软件展馆展示设计公司哪家好一点
  • 奢侈品网站策划方案建设一个电商网站的流程
  • 秦皇岛做网站外包一流本科专业建设网站
  • 深圳做手机网站建设济南装修网
  • dw 个人网站怎么做个人建设网站程序
  • 坪山企业网站建设黑马程序员吧
  • 网站收录入口申请网站被降权重新做网站
  • 网站建设的基本流程有哪些常用的编辑html的软件
  • 大连网站建设与维护题库 天堂资源最新版中文资源
  • 简述php网站开发流程图成都 网站
  • 做电商运营要什么条件wordpress 界面优化
  • 搭建网站宣传西安网站搭建费用
  • 建协网官方网站科技管理信息网站的建设方案
  • 营销型网站方案广州建网站模板
  • 南京和筑建设有限公司网站关闭 百度云加速 后网站打不开了
  • 在家做兼职的网站服务器如何发布网站
  • 温州网站建设wmwl视频直播app下载
  • 深圳网站制作作优秀的app界面设计案例
  • 博山网站建设yx718做漆包线的招聘网站
  • 高端企业网站建站东莞最好的网站建设价格低
  • 免费网站源码杭州网站建设推广
  • cms建站程序更改wordpress代码
  • 网站弹出页面设计专业
  • 企业网站排名软件能优化wordpress首页显示分类
  • 网站建设费计入那个科目cms电影网站模板
  • 普同网站跟营销型网站的区别优化网站结构一般包括
  • 中国最大的网站东莞整合网站建设推广