Java 如何实现模板设计模式?

Java 如何实现模板设计模式?,java,design-patterns,refactoring,Java,Design Patterns,Refactoring,我有一个练习需要使用模板设计模式进行重构。我已经看到了它如何工作的基本解释,但我无法清楚地知道应该如何实现我的解决方案。有人能帮我吗?这种情况下的逻辑是什么 我有这样一门课: package bodyfat; public class BodyFatCalculator { private double height; private double waist; private double weight; private double hip; pr

我有一个练习需要使用模板设计模式进行重构。我已经看到了它如何工作的基本解释,但我无法清楚地知道应该如何实现我的解决方案。有人能帮我吗?这种情况下的逻辑是什么

我有这样一门课:

package bodyfat;

public class BodyFatCalculator {

    private double height;
    private double waist;
    private double weight;
    private double hip;
    private double abdomen;

    public BodyMeasures( double height, double waist, double weight, double hip, double abdomen ) {
    this.height = height;
    this.waist = waist;
    this.weight = weight;
    this.hip = hip;
    this.abdomen = abdomen;
    }

    /**
    * @return the height
    */
    public double getHeight() {
       return height;
    }

    /**
    * @return the waist
    */
    public double getWaist() {
       return waist;
    }

    /**
    * @return the weight
    */
    public double getWeight() {
       return weight;
    }

    /**
    * @return the hip
    */
    public double getHip() {
       return hip;
    }

    /**
    * @return the abdomen
    */
    public double getAbdomen() {
       return abdomen;
    }

}

因此,除了女性使用
getHip()
和男性使用
get腹部()
之外,男性和女性的计算方法似乎是相同的。可以对其进行重构,使基类
BodyFatCalculator
定义用于执行此计算的模板,该模板调用“模板方法”以获取要使用的度量的具体实现(因此,您将添加一个
FemaleBodyFatCalculator
MaleBodyFatCalculator
,它们将分别覆盖一个抽象方法,如
getMiddle(BodyMeasures body)
。雌性将返回
body.getHip()
,而雄性将返回
body.GetAbustry()

因此,它的要点是,您的基类有一个多步骤算法要实现,因此它实现了通用框架或模板,它调用由子类实现的可重写或抽象方法


在这种情况下,重构似乎是一件小事,但我想这就是家庭作业;)

因此,除了女性使用
getHip()
和男性使用
getabustry()之外,男性和女性的计算方法似乎是一样的
。可以对其进行重构,使基类
BodyFatCalculator
定义用于执行此计算的模板,该模板调用“模板方法”以获取要使用的度量的具体实现(因此,您将添加一个
FemaleBodyFatCalculator
MaleBodyFatCalculator
,它们将分别覆盖一个抽象方法,如
getMiddle(BodyMeasures body)
。雌性将返回
body.getHip()
,而雄性将返回
body.GetAbustry()

因此,它的要点是,您的基类有一个多步骤算法要实现,因此它实现了通用框架或模板,它调用由子类实现的可重写或抽象方法


在这种情况下,重构似乎是一件小事,但我想这就是家庭作业;)

这可能属于代码评审,这可能属于代码评审