您的位置:首页 > 编程语言 > Java开发

java设计模式大话之模板模式

2017-01-23 17:37 447 查看
人最宝贵的东西是生命,生命属于人只有一次,上帝给了我们一副牌,我们只能按照上帝的规则,在短短的人生旅途中打好这副牌,活出精彩人生。



模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。

从这个定义中我们就可以看出,模板模式是一种适应面很广泛的模式。父类定义一个大的功能骨架,然后子类按照这个骨架去实现剩余的部分。不同的子类有不同的表达,但是不能违反父类制定的规则。跟人生是多么类似,生老病死,谁都无法逃脱,我们能做的就是戴着镣铐,好好跳我们的人生之舞。

类图:



实例:

    小张,小王,小李,三人大学毕业后,都面临找工作的情况,小张家境不好,但是学习认真刻苦,家里留给他的不多,只能自食其力,靠自己,他喜欢钻研技术,所以决定打工赚钱,回报父母。小王家里面是经商的,所以父母希望提供自己的人脉资金,给小王经商,加上小王头脑聪慧,很乐意的开始了,小李家里面是从政的,父亲一直希望他毕业后考公务员,利用家里的关系,帮他谋个一官半职,小李从小受父亲影响,对政治民生也是很感兴趣。三个人毕业后踏上了不种不同的人生。现实安排下的不同的人生。

代码实现:

/**
* @author Administrator
* 人生模板,每个人都需遵循的标准
*/
public abstract class StandardLife
{
public void graduate()
{
System.out.println("今天毕业了,走出校门,走上社会,参加工作");

};

protected abstract void work();

public final void live()
{
System.out.println("===============================");
graduate();//毕业
work();//上班
System.out.println("===============================");
}
}

//小张
public class MrZhang extends StandardLife{

@Override
protected void work() {
// TODO Auto-generated method stub
System.out.println("打工:男人当自强,虽然家里面给不了多少帮助,但是我还是靠自己,我可以");
}

}

//小王
public class MrWang extends StandardLife{

@Override
protected void work() {
// TODO Auto-generated method stub
System.out.println("经商:父母给了我很好的资源,我的生意一定可以做起来");
}

}

//小李
public class MrLi extends StandardLife{

@Override
protected void work() {
// TODO Auto-generated method stub
System.out.println("从政:为人民服务一直是我的理想信念");
}

}

public class StandLifClient {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//小张的人生
System.out.println("小张的人生===================");
StandardLife zhang =new MrZhang();
// zhang.graduate();
// zhang.work();
zhang.live();

//小王的人生
System.out.println("小王的人生===================");
StandardLife wang =new MrWang();
// wang.graduate();
// wang.work();
wang.live();

// 小李的人生
System.out.println("小李的人生===================");
StandardLife li =new MrLi();
// li.graduate();
// li.work();
li.live();

}

}
结果:



总结:

父类控制着子类的实现逻辑,子类实现父类的可变部分,但是却继承了逻辑,有些逻辑是无法修改的,我们知道一个算法所需要的关键步骤,并确定了这些步骤的执行顺序,步骤的具体实现是未知的,或者说与具体的环境有关,它把我们不知道的步骤封装成抽象方法,提供一个按正确顺序调用它们的方法,这些方法称为模板方法,提供给外部调用,构成一个抽象基类,子类通过继承这个抽象基类去实现各个步骤的抽象方法,流程的处理逻辑是由父类来控制的。

    最后,无论人生路艰辛还是平坦,愿我们欢笑以对,不负此生。



    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: