美文网首页
Template Method Design Pattern

Template Method Design Pattern

作者: zheting | 来源:发表于2018-03-22 09:42 被阅读18次
package com.sheting.design.pattern.demo8;

/**
 * @Author SheTing
 * @Time 2018/3/22 9:34
 */
public abstract class HouseTemplate {

    //template method, final so subclasses can't override
    public final void buildHouse() {
        buildFoundation();  // 地基
        buildPillars();  //顶梁柱
        buildWalls();
        buildWindows();
        System.out.println("House is built.");
    }

    //default implementation
    private void buildWindows() {
        System.out.println("Building Glass Windows");
    }

    //methods to be implemented by subclasses
    public abstract void buildWalls();

    public abstract void buildPillars();

    private void buildFoundation() {
        System.out.println("Building foundation with cement,iron rods and sand");
    }
}

package com.sheting.design.pattern.demo8;

/**
 * @Author SheTing
 * @Time 2018/3/22 9:35
 */
public class WoodenHouse extends  HouseTemplate{

    @Override
    public void buildWalls() {
        System.out.println("Building Wooden Walls");
    }

    @Override
    public void buildPillars() {
        System.out.println("Building Pillars with Wood coating");
    }
}

package com.sheting.design.pattern.demo8;

/**
 * @Author SheTing
 * @Time 2018/3/22 9:35
 */
public class GlassHouse extends HouseTemplate {

    @Override
    public void buildWalls() {
        System.out.println("Building Glass Walls");
    }

    @Override
    public void buildPillars() {
        System.out.println("Building Pillars with glass coating");
    }
}

package com.sheting.design.pattern.demo8;

/**
 * @Author SheTing
 * @Time 2018/3/22 9:36
 */
public class HousingClient {

    public static void main(String[] args) {

        HouseTemplate houseType = new WoodenHouse();

        //using template method
        houseType.buildHouse();
        System.out.println("************");

        houseType = new GlassHouse();

        houseType.buildHouse();
    }
 
}

相关文章

网友评论

      本文标题:Template Method Design Pattern

      本文链接:https://www.haomeiwen.com/subject/kdboqftx.html