All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.biz.common.strategy.SelectableStrategyService Maven / Gradle / Ivy

Go to download

BizX 是一个灵活而高效的业务开发框架, 其中也有很多为业务开发所需要的工具类的提供。

The newest version!
package com.biz.common.strategy;


/**
 * 选择策略接口
 * 

* 该接口定义了在给定参数的情况下,选择合适策略的操作。它使用泛型来允许灵活的选择和执行特定的策略服务。 *

* *

Parameter_Type: 表示选择策略时所需的参数类型,增强了代码的通用性和类型安全。

*

T extends StrategyService<Parameter_Type>: 表示选择的策略必须是StrategyService接口的实现,且该实现适用于特定的参数类型Parameter_Type,这种泛型约束确保了策略的选择和应用是类型匹配的。

* *

通过实现该接口,可以在运行时根据不同的参数动态选择适当的策略服务,从而使应用程序更加灵活和可扩展。

* *
{@code
 * // 示例用法
 * // 示例类:支付类型
 * public enum PaymentType {
 *     // 信用卡支付
 *     CREDIT_CARD,
 *     // PayPal支付
 *     PAY_PAL
 * }
 *
 * // 示例类:支付信息
 * public class PaymentDetails {
 *     private final PaymentType type;
 *     private final String name;
 *
 *     public PaymentDetails(PaymentType type, String name) {
 *         this.type = type;
 *         this.name = name;
 *     }
 *
 *     public PaymentType getType() {
 *         return type;
 *     }
 *
 *     public String getName() {
 *         return name;
 *     }
 * }
 *
 * // 策略接口定义
 * public interface PaymentStrategy extends StrategyService {
 *     void pay(PaymentDetails details);
 * }
 *
 * // 具体策略实现:信用卡支付
 * public class CreditCardPaymentStrategy implements PaymentStrategy {
 *     @Override
 *     public boolean check(PaymentType type) {
 *         return type == PaymentType.CREDIT_CARD;
 *     }
 *
 *     @Override
 *     public void pay(PaymentDetails details) {
 *         // 实现信用卡支付逻辑
 *         System.out.println("Processing credit card payment");
 *     }
 * }
 *
 * // 具体策略实现:PayPal支付
 * public class PayPalPaymentStrategy implements PaymentStrategy {
 *     @Override
 *     public boolean check(PaymentType type) {
 *         return type == PaymentType.PAY_PAL;
 *     }
 *
 *     @Override
 *     public void pay(PaymentDetails details) {
 *         // 实现PayPal支付逻辑
 *         System.out.println("Processing PayPal payment");
 *     }
 * }
 *
 * // 使用策略选择器
 * public class PaymentProcessor {
 *     private final SelectableStrategyService selector = new LazySelectableAbstractStrategyService() {};
 *
 *     public void processPayment(PaymentDetails details) {
 *         PaymentStrategy strategy = selector.select(details.getType());
 *         if (strategy != null) {
 *             strategy.pay(details);
 *         } else {
 *             System.out.println("Payment details do not match the selected strategy.");
 *         }
 *     }
 * }
 *
 * }
* * @param 选择策略时所需的参数类型。 * @param 策略服务的具体类型,必须实现StrategyService接口并适用于给定的参数类型。 * @author francis * @version 1.0.1 * @since 1.0.1 */ public interface SelectableStrategyService> { /** * 根据参数选择策略 *

* 该方法接受一个特定类型的参数,根据该参数的值或特性选择并返回一个合适的策略服务。 * 这种动态选择策略的能力是策略模式的核心,它允许在运行时根据具体情况灵活地切换算法或行为。 *

* * @param param 用于选择策略的参数,其类型应与Parameter_Type一致。 * @return 返回一个策略服务实例,该实例是StrategyService接口的特定实现,适用于处理param类型的参数。 */ T select(Parameter_Type param); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy