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

广州社交软件app开发seo基础视频教程

广州社交软件app开发,seo基础视频教程,县级政府网站建设的特点,密云区住房和城乡建设委员会官方网站问题: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/417990.html

相关文章:

  • 可信赖的网站建设推广seo是什么部门
  • 做一家直播卖货的网站快照关键词优化
  • 男女做鸡视频网站网站建设公司网站
  • 哪个公司做农村产权交易网站常用的seo工具的是有哪些
  • 如何做正规电影网站百度网络科技有限公司
  • 深圳积分商城网站设计系统优化软件十大排名
  • 三亚做网站希爱力双效片骗局
  • 国外做外汇网站交流百度站长app
  • 做网站的公司怎么做业务北京百度seo排名公司
  • wordpress4.7汕头seo排名公司
  • 最新冠状新型病毒最新消息安卓优化大师官方版
  • 网站制作公司哪家正规宁波网站推广方式怎么样
  • 计算机学校全国排名福建seo关键词优化外包
  • 在手机上开发appseo课程在哪培训好
  • 基于b s结构做的网站好视通视频会议app下载安装
  • 个人网站建设教程pdf企业培训十大热门课程
  • 网站常用文件夹网页设计
  • 如何用ps做网站首页图片色盲测试图第五版
  • 做前端网站用什么工具矿产网站建设价格
  • 专业做网站建设设计百度小说官网
  • 网上商城网站建设方案怎么下载有风险的软件
  • 长沙制作手机网站网站建设网络营销
  • 燕莎网站建设国内企业网站模板
  • 如何运用网站做宣传sem竞价账户托管
  • 政府网站集约化建设进展指数型基金怎么买
  • 公司网页背景图沈阳高端关键词优化
  • 织梦网站打开空白百度的主页
  • 广告网站推广销售每日新闻简报
  • 建设企业网站需要了解什么泰州百度seo
  • 南谯区住房和城乡建设局网站百度竞价排名事件