23种设计模式-java-模板方法

模式概述:

它在超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。

使用场景:

  1. 当你只希望客户端扩展某个特定算法步骤, 而不是整个算法或其结构时, 可使用模板方法模式。
  2. 当多个类的算法除一些细微不同之外几乎完全一样时, 你可使用该模式。 但其后果就是, 只要算法发生变化, 你就可能需要修改所有的类。

代码样例:

/**
 * 超类
 */
public abstract class SeekGirlTempplate {
    /**
     * 撩妹方法(一个模板方法)
     */
    public final boolean seekGril(){
        boolean result = false;
        if(addFriend()){
            meet();
            result = confession();
        }
       return result;
    }

    /**
     * 添加好友
     */
    public abstract boolean addFriend();

    /**
     * 交往
     */
    public abstract void meet();

    /**
     * 表白
     */
    public abstract boolean confession();
}
/**
 * 艺术家
 */
public class Artist  extends SeekGirlTempplate{
    @Override
    public boolean addFriend() {
        System.out.println("文艺气息不由自主的散发,吸引了girl,要到了联系方式");
        return true;
    }

    @Override
    public void meet() {
        System.out.println("每天一封情书");
    }

    @Override
    public boolean confession() {
        System.out.println("一封长达两万字的告白情诗");
        return true;
    }
}
/**
 * 程序员
 */
public class Programmer extends SeekGirlTempplate{
    @Override
    public boolean addFriend() {
        System.out.println("通过专业技能,爬取girl联系方式");
        return true;
    }

    @Override
    public void meet() {
        System.out.println("与girl谈论植发之路?");
    }

    @Override
    public boolean confession() {
        System.out.println("又土又木?");
        return false;
    }
}
/**
 * 测死模板方法
 */
public class TestTemplateMethod {
    public static void main(String[] args) {
        SeekGirlTempplate seekGirlTempplate = new Programmer();
        boolean result = seekGirlTempplate.seekGril();
        System.out.println("撩妹结果:"+result);
    }
}

测试结果;
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值