ToB企服应用市场:ToB评测及商务社交产业平台

标题: 计谋+适配器模式详解 [打印本页]

作者: 钜形不锈钢水箱    时间: 2025-2-19 07:59
标题: 计谋+适配器模式详解
1.计谋模式

1.目次结构


2.Strategy.java 计谋接口

  1. package com.sunxiansheng.design_pattern.strategy;
  2. /**
  3. * Description: 策略接口
  4. *
  5. * @Author sun
  6. * @Create 2025/2/7 12:17
  7. * @Version 1.0
  8. */
  9. public interface Strategy {
  10.     /**
  11.      * 算法接口
  12.      */
  13.     void algorithmInterface();
  14. }
复制代码
3.StrategyA.java 计谋A

  1. package com.sunxiansheng.design_pattern.strategy;
  2. /**
  3. * Description: 策略A
  4. *
  5. * @Author sun
  6. * @Create 2024/8/12 20:05
  7. * @Version 1.0
  8. */
  9. public class StrategyA implements Strategy{
  10.     @Override
  11.     public void algorithmInterface() {
  12.         System.out.println("策略A");
  13.     }
  14. }
复制代码
4.StrategyB.java 计谋B

  1. package com.sunxiansheng.design_pattern.strategy;
  2. /**
  3. * Description: 策略B
  4. *
  5. * @Author sun
  6. * @Create 2024/8/12 20:05
  7. * @Version 1.0
  8. */
  9. public class StrategyB implements Strategy{
  10.     @Override
  11.     public void algorithmInterface() {
  12.         System.out.println("策略B");
  13.     }
  14. }
复制代码
5.StrategyC.java 计谋C

  1. package com.sunxiansheng.design_pattern.strategy;
  2. /**
  3. * Description: 策略C
  4. *
  5. * @Author sun
  6. * @Create 2024/8/12 20:05
  7. * @Version 1.0
  8. */
  9. public class StrategyC implements Strategy{
  10.     @Override
  11.     public void algorithmInterface() {
  12.         System.out.println("策略C");
  13.     }
  14. }
复制代码
6.Context.java 计谋上下文

  1. package com.sunxiansheng.design_pattern.strategy;
  2. /**
  3. * Description: 策略上下文,根据不同的策略执行不同的算法
  4. *
  5. * @Author sun
  6. * @Create 2025/2/7 12:17
  7. * @Version 1.0
  8. */
  9. public class Context {
  10.     /**
  11.      * 策略的属性
  12.      */
  13.     private Strategy strategy;
  14.     /**
  15.      * 在创建对象的时候就指定不同的策略
  16.      * @param type
  17.      */
  18.     public Context(int type) {
  19.         switch (type) {
  20.             case 1:
  21.                 strategy = new StrategyA();
  22.                 break;
  23.             case 2:
  24.                 strategy = new StrategyB();
  25.                 break;
  26.             case 3:
  27.                 strategy = new StrategyC();
  28.                 break;
  29.             default:
  30.                 break;
  31.         }
  32.     }
  33.     /**
  34.      * 调用具体的算法
  35.      */
  36.     public void contextInterface() {
  37.         strategy.algorithmInterface();
  38.     }
  39. }
复制代码
7.Client.java 客户端

  1. package com.sunxiansheng.design_pattern.strategy;
  2. /**
  3. * Description: 客户端
  4. *
  5. * @Author sun
  6. * @Create 2025/2/7 12:19
  7. * @Version 1.0
  8. */
  9. public class Client {
  10.     public static void main(String[] args) {
  11.         // 策略工厂中定义具体的策略
  12.         Context context = new Context(1);
  13.         // 调用方法时,就会指定具体的策略
  14.         context.contextInterface();
  15.     }
  16. }
复制代码
8.小结

计谋模式,首先要定义一个计谋接口,然后每个详细的计谋都要去实现这个计谋接口,接下来就要有一个上下文,这个上下文可以根据不同的范例来设置不同的计谋。
2.适配器模式

1.目次结构


2.CustomPaymentProcessor.java 自己的支付接口

  1. package com.sunxiansheng.design_pattern.adapter;
  2. /**
  3. * Description: 自定义的支付接口
  4. *
  5. * @Author sun
  6. * @Create 2025/2/9 11:05
  7. * @Version 1.0
  8. */
  9. public interface CustomPaymentProcessor {
  10.     void processPayment(double amount);
  11. }
复制代码
3.PayPalPaymentService.java 第三方的支付服务

  1. package com.sunxiansheng.design_pattern.adapter;
  2. /**
  3. * Description: 第三方支付服务(需要适配的接口)
  4. *
  5. * @Author sun
  6. * @Create 2025/2/9 11:06
  7. * @Version 1.0
  8. */
  9. public class PayPalPaymentService {
  10.     public void makePayment(double amountInDollars) {
  11.         System.out.println("Payment made using PayPal: $" + amountInDollars);
  12.     }
  13. }
复制代码
4.PayPalPaymentAdapter.java 第三方适配器

  1. package com.sunxiansheng.design_pattern.adapter;
  2. /**
  3. * Description: 适配器类,用来将第三方的PayPal支付接口适配到系统自定义的支付接口上
  4. *
  5. * @Author sun
  6. * @Create 2025/2/9 11:07
  7. * @Version 1.0
  8. */
  9. public class PayPalPaymentAdapter implements CustomPaymentProcessor {
  10.     /**
  11.      * 注入第三方接口
  12.      */
  13.     private PayPalPaymentService payPalPaymentService;
  14.     public PayPalPaymentAdapter(PayPalPaymentService payPalPaymentService) {
  15.         this.payPalPaymentService = payPalPaymentService;
  16.     }
  17.     /**
  18.      * 将第三方接口适配,使其满足自己接口的要求
  19.      *
  20.      * @param amount
  21.      */
  22.     @Override
  23.     public void processPayment(double amount) {
  24.         System.out.println("适配过的接口");
  25.         payPalPaymentService.makePayment(amount);
  26.     }
  27. }
复制代码
5.Client.java 客户端

  1. package com.sunxiansheng.design_pattern.adapter;
  2. /**
  3. * Description: 客户端
  4. *
  5. * @Author sun
  6. * @Create 2025/2/9 11:08
  7. * @Version 1.0
  8. */
  9. public class Client {
  10.     public static void main(String[] args) {
  11.         // 第三方的支付Service
  12.         PayPalPaymentService payPalPaymentService = new PayPalPaymentService();
  13.         // 自己的适配器聚合第三方支付
  14.         PayPalPaymentAdapter payPalPaymentAdapter = new PayPalPaymentAdapter(payPalPaymentService);
  15.         // 使用适配器调用方法
  16.         payPalPaymentAdapter.processPayment(100.0);
  17.     }
  18. }
复制代码
6.小结

适配器模式其实就是自己有一个接口,然后第三方有一个服务,就需要一个适配器,这个适配器就需要实现自己的接口,然后聚合第三方的接口,来完成自己接口的对应功能。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4