设计模式浅析之--模板方法模式Template Method

模板模式被应用的比较多,尤其是在框架设计中,框架的作用在很大程度上就是为你创建一个方便的开发程序的模板,而你只需要实现模板中的一些接口就能完成一个复杂的任务。模板的核心是,大的逻辑已经定义,你要做的就是实现一些具体的步骤,不同的人实现这些步骤的方法也会有所不同,从而模板的行为也会表现出具体的区别。
模板的结构:
1.抽象模板:抽象模板中,有抽象的方法(等待子类去实现),也可以有具体的实现方法;定义了完整的框架后,方法的调用顺序通常已经确定了,但是还是会定义一个抽象的方法去给子类实现。通过调用抽象类的抽象方法来实现对子类的调用。
2.具体模板实现类:实现抽象模板中的抽象方法,实现具体的功能,组成一个完整的逻辑。
下面是一个具体的示例:
示例类图
类图

示例序列图
序列图
计算器的抽象类

public abstract class AbstractCaculator {

    /**
     * 主方法 ,实现对本类中其它方法的调用
     * @param exp 
     * @param opt
     * @return
     */
    public final int calculate(String exp,String opt)
    {
        int[] array = split(exp,opt);
        return calculate(array);
    }

    /**被子类重写的方法*/
    public abstract int calculate(int[] array);

    public int[] split(String exp,String opt)
    {
        String[] array = exp.split(opt);
        int[] intArray = new int[array.length];
        for(int i =0;i<array.length;i++)
        {
            intArray[i]=Integer.parseInt(array[i]);
        }
        return intArray;
    }
} 

加法计算器

public class PlusCalculator extends AbstractCaculator {

    //实现了父类AbstractCaculator中的抽象方法
    public int calculate(int[] array) {
        int result = 0;
        for(int i =0;i<array.length;i++)
        {
            result += array[i];
        }
        return result;
    }

}

减法计算器

public class MinusCalculator extends AbstractCaculator {
    //实现了父类AbstractCaculator中的抽象方法
    public int calculate(int[] array) {
        int result = array[0];
        for(int i =1;i<array.length;i++)
        {
            result -= array[i];
        }
        return result;
    }

}

下面是测试类

public class Main {
    public static void main(String[] args) {
        //加法计算器
        String exp="9+9+9+8";
        AbstractCaculator calculator = new PlusCalculator();
        int result = calculator.calculate(exp, "\\+");
        System.out.println(result);

    //减法计算器
    AbstractCaculator c = new MinusCalculator();
    int r = c.calculate("5-2-1-5", "\\-");
    System.out.println(r);
    }
}

控制台console打印:
35
-3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
docker-compose 是 Docker 官方的一个用于定义和运行容器化应用的工具。它使用 YAML 文件来配置应用的服务、网络和卷等方面的设置。 当使用 docker-compose 部署 MySQL 时,可能会遇到无法访问 MySQL 的问题。出现这种情况一般有以下几个可能的原因: 1. 网络配置问题:docker-compose 在默认情况下会创建一个默认的网络,并将所有定义的服务连接到该网络。如果服务的网络配置不正确,可能导致无法访问 MySQL。可以通过检查网络配置或创建自定义网络来解决此问题。 2. 端口映射问题:MySQL 默认使用 3306 端口进行通信,但是在容器内部的端口与宿主机上的端口之间可能存在映射问题。可以通过检查端口映射配置或使用容器的 IP 地址来解决此问题。 3. 认证问题:MySQL 服务通常需要进行身份验证才能访问。在 docker-compose 文件中,可以通过设置环境变量来指定 MySQL 的用户名和密码。如果未正确设置这些环境变量,可能导致无法访问 MySQL。可以检查环境变量配置或者在容器内部手动配置用户名和密码来解决此问题。 4. 容器启动顺序问题:如果在 docker-compose 文件中定义了多个服务,并且它们之间有依赖关系,那么容器启动的顺序可能会影响 MySQL 的访问。可以通过在容器之间添加依赖或者设置延迟启动来解决此问题。 总结起来,当 docker-compose 部署的 MySQL 无法访问时,通常是由于网络配置、端口映射、认证配置或容器启动顺序等问题造成的。通过检查这些配置,并进行适当的调整或修复,通常可以解决无法访问 MySQL 的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值