模板模式
来源:互联网 发布:全国软件开发考试报名 编辑:程序博客网 时间:2024/05/22 02:08
模板模式主要是发生在继承当中,父类方法中调用了子类实现或者重写的方法,这样的好处是可以实现良好的代码架构 和 减少代码的冗余。比如在麻将游戏中 胡牌操作,就可以用模板方法,因为胡牌时 首先要判断 胡的是一个什么牌型,然后进行分数的计算,通知其他玩家胡牌 等一系列操作,首先不用模板方法来实现这个功能。
abstracl class AbstractMajiang{
abstract int judegeHutype(); // 返回胡牌类型 例如 1表示清一色 2表示十三幺 等等
public int contGrade(int hutype );//利用我们计算的胡的牌型来算分数 并且进行扣分 加分
public vod notifyHu(); //通知其他玩家 胡牌
}
class LeShanMajiang extends AbstractMajiang {
int jjudegeHutype(){.....省略具体的过程}//因为每一个麻将 各有自己不同的胡牌类型 所以要实现这个方法
void hu(
jjudegeHutype();
contGrade(int hutype );
notifyHu();
)
}
class HuNanMajiang extends AbstractMajiang {
int jjudegeHutype(){.....省略具体的过程}//湖南麻将的胡牌判断
void hu(
jjudegeHutype();
contGrade(int hutype );
notifyHu();
)
}
此时我们会发现每个麻将的胡牌操作逻辑都是固定的,如果每一个麻将都自己实现hu这个方法则代码的冗余很高,可维护性不是很好所以可以用模板方法,来将其写在父类当中,然后在子类实现其调用的jjudegeHutype方法。修改如下
abstracl class AbstractMajiang{
abstract int judegeHutype(); // 返回胡牌类型 例如 1表示清一色 2表示十三幺 等等
public int contGrade(int hutype );//利用我们计算的胡的牌型来算分数 并且进行扣分 加分
public vod notifyHu(); //通知其他玩家 胡牌
public void hu(){
judegeHutype();
contGrade();
notifyHu();
}
}
class LeShanMajiang extends AbstractMajiang {
int jjudegeHutype(){.....省略具体的过程}//乐山麻将的胡牌判断
}
class HuNanMajiang extends AbstractMajiang {
int jjudegeHutype(){.....省略具体的过程}//湖南麻将的胡牌判断
}
此时我们的整个代码看起来就很简洁,代码的可维护性也很好,如果以后需要在hu的时候记录相关的信息到日志当中 也只需要修改父类的方法就可以了
- 模板模式-抽象模板
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 基于注解的SpringMVC
- 提高JavaScript性能④
- OpenCV实践之路——人脸检测(C++/Python)
- 【Spring Boot 栏目】
- C语言题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
- 模板模式
- 比较冒泡排序和选择排序
- 除十磨十
- python 全排列 递归中的两种实现
- CSND太垃圾了了吧
- 简单电路实践——电路与二进制运算
- new对象与Spring对bean的初始化的差别
- 自动化报警的思路
- 极大似然估计