2017-11-26 8 views
1

Ich habe diese Übung, die ich mit Vorlage Entwurfsmuster umgestalten muss. Ich habe eine grundlegende Erklärung dafür gesehen, wie es funktioniert, aber ich kann mir keine klare Vorstellung davon machen, wie ich meine Lösung umsetzen sollte. Kann mir jemand helfen? Was wäre die Logik in diesem Fall?Wie implementiert man das Template Design Pattern?

Ich habe diese BodyFatCalculator Klasse:

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; 
    } 

} 
+0

Dies gehört wahrscheinlich Code Review https://codereview.stackexchange.com/ – Kerooker

Antwort

0

Also, es wie die Art und Weise sieht für Männer und Frauen zu berechnen, ist das gleiche, außer für Frauen verwenden getHip() und Männer getAbdomen() verwenden. Dies könnte refaktoriert werden, damit eine Basisklasse BodyFatCalculator die Vorlage für diese Berechnung definiert, die eine "Schablonenmethode" aufruft, um die spezifische Implementierung der zu verwendenden Messung zu erhalten (also würden Sie eine FemaleBodyFatCalculator und MaleBodyFatCalculator hinzufügen, und sie jeder außer Kraft setzen eine abstrakte Methode würde wie getMiddle(BodyMeassures body). Female body.getHip() zurückkehren würde und männliche würde body.getAbdomen() zurückzukehren.

so ist der Kern von ihm ist, dass Ihre Basisklasse einen mehrstufigen Algorithmus zu implementieren, so dass es implementiert den allgemeinen Rahmen oder Vorlage, die überschreibbare oder abstrakte Methoden aufruft, die von den Unterklassen implementiert werden

Es scheint eine triviale Sache in diesem Fall zu refactor, aber so ist Hausaufgaben, denke ich;)