我的设计模式--模板方法2

以上就是我们的模板方法了,典型特点就是采用了继承的方式来处理,而不是委托的方式。
从上面的代码中,我们可以看出,我们将顶级方法定义为fianl,这样子类就无法修改该方法,就达到了顶级规则不允许改变的原则。
同时将被实现的方法修饰了protect,如果是为子类及同包的类才能继承,达到权限控制的目的。因为客户端不关心这些方法。
比较常见的模板方法就是servlet。 加载--init--service--destory--释放内存

如果哪天编剧说再加个情节吧。那就加上重生环节吧。可以理解为原来的各个环节中,我们把重生这个环节默认为重生成功了。

//电影 阿凡达
public abstract class Avatar
{
//电影上演
public final void play()
{
daRu();
ooxx();
epiphqny();
fight();
end();
}

//以下就是我们定义的顶级规则,只能去实现,无权修改流程
//打入精灵内部
protect abstract void daRu();

//发生纯洁关系
protect abstract void ooxx();

//重生
protect void epiphqny()
{
//todo 重生了--成功
}

//与城管的生死搏斗
protect abstract void fight();

//路人挂,美女归
protect abstract void end();

protect void luRenJia()
{
//我是路人甲
}
}

那我们的阿汤哥的实现可以覆盖重生,也可以不覆盖重生,因为已经有一个默认的实现了。

理论讲解:
一般模板方法中的方法我们区分为:
方法:
---模板方法:定义顶级规则的方法,本案中的play()方法
---基本方法
---抽象方法:抽象类提供一个抽象方法,具体由子类来实现。本案中daRu()方法
---具体方法:由抽象类声明并实现,子类并不实现或置换。本案中luRenJia()方法
---钩子方法:由抽象类声明并实现,子类会加以扩展。一般抽象类空实现,具体由子类来实现,本案中的epiphqny();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值