ToB企服应用市场:ToB评测及商务社交产业平台
标题:
计谋+适配器模式详解
[打印本页]
作者:
钜形不锈钢水箱
时间:
2025-2-19 07:59
标题:
计谋+适配器模式详解
1.计谋模式
1.目次结构
2.Strategy.java 计谋接口
package com.sunxiansheng.design_pattern.strategy;
/**
* Description: 策略接口
*
* @Author sun
* @Create 2025/2/7 12:17
* @Version 1.0
*/
public interface Strategy {
/**
* 算法接口
*/
void algorithmInterface();
}
复制代码
3.StrategyA.java 计谋A
package com.sunxiansheng.design_pattern.strategy;
/**
* Description: 策略A
*
* @Author sun
* @Create 2024/8/12 20:05
* @Version 1.0
*/
public class StrategyA implements Strategy{
@Override
public void algorithmInterface() {
System.out.println("策略A");
}
}
复制代码
4.StrategyB.java 计谋B
package com.sunxiansheng.design_pattern.strategy;
/**
* Description: 策略B
*
* @Author sun
* @Create 2024/8/12 20:05
* @Version 1.0
*/
public class StrategyB implements Strategy{
@Override
public void algorithmInterface() {
System.out.println("策略B");
}
}
复制代码
5.StrategyC.java 计谋C
package com.sunxiansheng.design_pattern.strategy;
/**
* Description: 策略C
*
* @Author sun
* @Create 2024/8/12 20:05
* @Version 1.0
*/
public class StrategyC implements Strategy{
@Override
public void algorithmInterface() {
System.out.println("策略C");
}
}
复制代码
6.Context.java 计谋上下文
package com.sunxiansheng.design_pattern.strategy;
/**
* Description: 策略上下文,根据不同的策略执行不同的算法
*
* @Author sun
* @Create 2025/2/7 12:17
* @Version 1.0
*/
public class Context {
/**
* 策略的属性
*/
private Strategy strategy;
/**
* 在创建对象的时候就指定不同的策略
* @param type
*/
public Context(int type) {
switch (type) {
case 1:
strategy = new StrategyA();
break;
case 2:
strategy = new StrategyB();
break;
case 3:
strategy = new StrategyC();
break;
default:
break;
}
}
/**
* 调用具体的算法
*/
public void contextInterface() {
strategy.algorithmInterface();
}
}
复制代码
7.Client.java 客户端
package com.sunxiansheng.design_pattern.strategy;
/**
* Description: 客户端
*
* @Author sun
* @Create 2025/2/7 12:19
* @Version 1.0
*/
public class Client {
public static void main(String[] args) {
// 策略工厂中定义具体的策略
Context context = new Context(1);
// 调用方法时,就会指定具体的策略
context.contextInterface();
}
}
复制代码
8.小结
计谋模式,首先要定义一个计谋接口,然后每个详细的计谋都要去实现这个计谋接口,接下来就要有一个上下文,这个上下文可以根据不同的范例来设置不同的计谋。
2.适配器模式
1.目次结构
2.CustomPaymentProcessor.java 自己的支付接口
package com.sunxiansheng.design_pattern.adapter;
/**
* Description: 自定义的支付接口
*
* @Author sun
* @Create 2025/2/9 11:05
* @Version 1.0
*/
public interface CustomPaymentProcessor {
void processPayment(double amount);
}
复制代码
3.PayPalPaymentService.java 第三方的支付服务
package com.sunxiansheng.design_pattern.adapter;
/**
* Description: 第三方支付服务(需要适配的接口)
*
* @Author sun
* @Create 2025/2/9 11:06
* @Version 1.0
*/
public class PayPalPaymentService {
public void makePayment(double amountInDollars) {
System.out.println("Payment made using PayPal: $" + amountInDollars);
}
}
复制代码
4.PayPalPaymentAdapter.java 第三方适配器
package com.sunxiansheng.design_pattern.adapter;
/**
* Description: 适配器类,用来将第三方的PayPal支付接口适配到系统自定义的支付接口上
*
* @Author sun
* @Create 2025/2/9 11:07
* @Version 1.0
*/
public class PayPalPaymentAdapter implements CustomPaymentProcessor {
/**
* 注入第三方接口
*/
private PayPalPaymentService payPalPaymentService;
public PayPalPaymentAdapter(PayPalPaymentService payPalPaymentService) {
this.payPalPaymentService = payPalPaymentService;
}
/**
* 将第三方接口适配,使其满足自己接口的要求
*
* @param amount
*/
@Override
public void processPayment(double amount) {
System.out.println("适配过的接口");
payPalPaymentService.makePayment(amount);
}
}
复制代码
5.Client.java 客户端
package com.sunxiansheng.design_pattern.adapter;
/**
* Description: 客户端
*
* @Author sun
* @Create 2025/2/9 11:08
* @Version 1.0
*/
public class Client {
public static void main(String[] args) {
// 第三方的支付Service
PayPalPaymentService payPalPaymentService = new PayPalPaymentService();
// 自己的适配器聚合第三方支付
PayPalPaymentAdapter payPalPaymentAdapter = new PayPalPaymentAdapter(payPalPaymentService);
// 使用适配器调用方法
payPalPaymentAdapter.processPayment(100.0);
}
}
复制代码
6.小结
适配器模式其实就是自己有一个接口,然后第三方有一个服务,就需要一个适配器,这个适配器就需要实现自己的接口,然后聚合第三方的接口,来完成自己接口的对应功能。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4