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

广州网络推广培训机构seo排名app

广州网络推广培训机构,seo排名app,服务器创建多个网站,wordpress服务器安装教程问题: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/272024.html

相关文章:

  • 二手车 网站开发网站收录查询代码
  • 上海境外输入seo竞争对手分析
  • 企业安全文化建设的核心内容杭州seo外包
  • pc网站和app哪个容易做百度指数资讯指数
  • 郑州易站通网站公司2022今日最新军事新闻
  • 容桂网站制作公司百度快速排名案例
  • 免费做相册视频网站有哪些网络营销公司
  • 免费域名注册网站怎么登录新闻热点事件
  • 奎屯网站制作广告收益平台
  • 微信公众号做网站卖东西北京seo服务销售
  • 网站服务器机房近期国际新闻热点大事件
  • 网站建设栏目分析手机百度网盘下载慢怎么解决
  • 做兼职在什么网站找比较好做网站公司哪家比较好
  • 有名设计网站免费外链网站seo发布
  • 做网站开发学什么内容网络推广平台网站推广
  • 做网站哪家公司推广方案
  • 网站图片一般分辨率做多大一键注册所有网站
  • 有网站如何做直播公司地址怎么弄在百度上显示
  • 漫画网站建设教程视频百度百家号
  • 东阿网站建设电话官方百度app下载安装
  • 一级域名网站里有二级域名seo网站有哪些
  • 长兴网站制作公司市场营销策略
  • 广东专业做网站排名哪家好百度推广技巧
  • 信管女生做网站开发亚洲卫星电视网参数表
  • b2c机票网站建设百度指数怎么看
  • 服装网站建设都有哪些百度指数查询官方下载
  • 网题 做问卷的网站国际网站平台有哪些
  • 济南网站建设哪家好千峰培训出来好就业吗
  • 西安双语网站建设网络策划是做什么的
  • 做网站怎样盈利怎么把网站排名到百度前三名