设计模式-注册模式

注册模式是一种设计模式,旨在允许在不修改原有代码的情况下添加新的功能。它常用于需要动态组合多个扩展功能的场景,确保系统可扩展性和维护性。
摘要由CSDN通过智能技术生成

注册模式常用于处理需要实现多个扩展功能,而不需要改变原有的代码结构功能。

/**
 * <p>Description: sql Parser</p>
 *
 * @author ccc
 * @date 2020/6/21 9:38
 * @since JDK1.8
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({
   ElementType.TYPE})
@Documented
public @interface Parser {
   

    String aliasName() default "";

}

/**
 * <p>Description: mysql type</p>
 *
 * @author ccc
 * @date 2020/6/21 9:42
 * @since JDK1.8
 */
@Parser(aliasName = "mysql")
public class MysqlParser {
   

    public void deal(){
   
        System.out.println("this is mysql");
    }
}

/**
 * <p>Description: oracle type</p>
 *
 * @author ccc
 * @date 2020/6/21 9:43
 * @since JDK1.8
 */
@Parser(aliasName = "oracle")
public class OracleParser {
   

    public void deal(){
   
        System.out.println("this is oracle");
    }
}

/**
 * <p>Description: sql server type</p>
 *
 * @author ccc
 * @date 2020/6/21 9:43
 * @since JDK1.8
 */
@Parser(aliasName = "sqlserver")
public class SqlServerParser {
   

    public void deal(){
   
        System.out.println("this is sqlserver");
    }
}

/**
 * <p>Description: scan classutil</p>
 *
 * @author ccc
 * @date 2020/6/18 9:30
 * @since JDK1.8
 */
public final class ClassUtil {
   

    private static final Set<Class<?>> classes = new HashSet<>();

    /**
     * 扫描某个包名下的所有class文件或是扫描jar文件
     *
     * @param packageName 包名
     * @return 所有 Class<?>
     */
    public static Set<Class<?>> scanPackage(String packageName) {
   
        return scanPackage(packageName, true);
    }

    /**
     * 扫描某个包名下的所有class文件或是扫描jar文件
     *
     * @param packageName 包名
     * @param recursive   是否循环递归
     * @return 所有 Class<?>
     */
    public static Set<Class<?>> scanPackage(String packageName, boolean recursive) {
   

        String packageDirName = packageName.replace('.', '/');

        System.err.println("packageDirName---------------" + packageDirName);

        Enumeration<URL> urls;
        try {
   
            urls = Thread.currentThread().getContextClassLoader().getResources(packageDirName);

            while (urls.hasMoreElements()) {
   
                // 获取下一个元素
                URL url = urls.n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值