searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

浅谈策略模式实现利器之Spring-Plugin

2024-05-29 01:51:49
19
0

概述

策略模式是一种行为设计模式,可用于定义一系列算法/实现并允许程序在运行时选择它们,Spring Plugin作为非常精简轻便的小规模插件系统,很好诠释了策略模式的实现。从官网得知,Spring Plugin是有史以来最小的插件,整个程序包只有十多个类,但却提供了Plugin接口实现的核心灵活性,满足构建模块化可扩展应用程序的要求。

原理

Spring Plugin提供一个Plugin接口提供后续继承使用声明,然后通过@EnablePluginRegistries注解依赖注入到Spring容器中,Spring容器会为我们自动匹配到插件的所有实现子对象,通过依赖注入,注入PluginRegistry对象获取拿到插件实例进行操作。

使用示例

1、添加maven依赖

<dependency>
   <groupId>org.springframework.plugin</groupId>
   <artifactId>spring-plugin-core</artifactId>
   <version>2.0.0.RELEASE</version>
</dependency>

2、定义接口参数对象

public class RuleContext {
    private String ruleCode;
    // ...
}

3、定义接口

public interface RuleContextHandler extends Plugin<RuleContext> {
    void handle(RuleContext ruleContext);
}

4、定义两个实现类

public class RuleStrategeAHandler implements RuleContextHandler {

    @Override
    public void handle(RuleContext ruleContext) {
         // 规则策略A实现
    }

}


public class RuleStrategeBHandler implements RuleContextHandler {

    @Override
    public void handle(RuleContext ruleContext) {
         // 规则策略B实现
    }

}

5、Spring启动类增加注解

@SpringBootApplication
@EnablePluginRegistries({RuleContextHandler.class})
public class Application {}

6、注入规则策略对象使用

public class RuleStrategeCaller {
  @Resource
  private PluginRegistry<RuleContextHandler, RuleContext> registry;


  public void doRuleHanle(@RequestBody RuleContext ruleContext) {
      RuleContextHandler rh = registry.getRequiredPluginFor(ruleContext);
      rh.handle(ruleContext);
  }
}

小结

Spring Plugin插件规模小,简单易用,虽然比较小众,但很好诠释了策略模式的实现,提供了Plugin接口实现的核心灵活性,满足构建模块化可扩展应用程序的要求,是实现典型策略模式的一大利器。

 

0条评论
作者已关闭评论
李****h
2文章数
0粉丝数
李****h
2 文章 | 0 粉丝
李****h
2文章数
0粉丝数
李****h
2 文章 | 0 粉丝
原创

浅谈策略模式实现利器之Spring-Plugin

2024-05-29 01:51:49
19
0

概述

策略模式是一种行为设计模式,可用于定义一系列算法/实现并允许程序在运行时选择它们,Spring Plugin作为非常精简轻便的小规模插件系统,很好诠释了策略模式的实现。从官网得知,Spring Plugin是有史以来最小的插件,整个程序包只有十多个类,但却提供了Plugin接口实现的核心灵活性,满足构建模块化可扩展应用程序的要求。

原理

Spring Plugin提供一个Plugin接口提供后续继承使用声明,然后通过@EnablePluginRegistries注解依赖注入到Spring容器中,Spring容器会为我们自动匹配到插件的所有实现子对象,通过依赖注入,注入PluginRegistry对象获取拿到插件实例进行操作。

使用示例

1、添加maven依赖

<dependency>
   <groupId>org.springframework.plugin</groupId>
   <artifactId>spring-plugin-core</artifactId>
   <version>2.0.0.RELEASE</version>
</dependency>

2、定义接口参数对象

public class RuleContext {
    private String ruleCode;
    // ...
}

3、定义接口

public interface RuleContextHandler extends Plugin<RuleContext> {
    void handle(RuleContext ruleContext);
}

4、定义两个实现类

public class RuleStrategeAHandler implements RuleContextHandler {

    @Override
    public void handle(RuleContext ruleContext) {
         // 规则策略A实现
    }

}


public class RuleStrategeBHandler implements RuleContextHandler {

    @Override
    public void handle(RuleContext ruleContext) {
         // 规则策略B实现
    }

}

5、Spring启动类增加注解

@SpringBootApplication
@EnablePluginRegistries({RuleContextHandler.class})
public class Application {}

6、注入规则策略对象使用

public class RuleStrategeCaller {
  @Resource
  private PluginRegistry<RuleContextHandler, RuleContext> registry;


  public void doRuleHanle(@RequestBody RuleContext ruleContext) {
      RuleContextHandler rh = registry.getRequiredPluginFor(ruleContext);
      rh.handle(ruleContext);
  }
}

小结

Spring Plugin插件规模小,简单易用,虽然比较小众,但很好诠释了策略模式的实现,提供了Plugin接口实现的核心灵活性,满足构建模块化可扩展应用程序的要求,是实现典型策略模式的一大利器。

 

文章来自个人专栏
develop
2 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0