模板方法模式

来源:互联网 发布:php开发分类信息 编辑:程序博客网 时间:2024/06/09 21:17
概述
模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。
比如定义一个操作中的算法的骨架,将步骤延迟到子类中。模板方法使得子类能够不去改变一个算法的结构即可重定义算法的某些特定步骤。

模式中的角色
抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。
具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。

应用
举个例子,以准备去学校所要做的工作(prepareGotoSchool)为例,假设需要分三步:穿衣服(dressUp),吃早饭(eatBreakfast),带上东西(takeThings)。学生和老师要做得具体事情肯定有所区别。
抽象类AbstractClass


public class TemplateMethod {    public static void main(String[] args) {        AbstractPerson abstractPerson=new Student();        abstractPerson.prepareGoSchool();    }}abstract class AbstractPerson{    public void prepareGoSchool(){        dressUp();        eat();    }    protected abstract void dressUp();    protected abstract void eat();}class Student extends AbstractPerson{    @Override    protected void dressUp() {        System.out.println("穿校服");    }    @Override    protected void eat() {        System.out.println("吃妈妈做的饭");    }}class Teacher extends AbstractPerson{    @Override    protected void dressUp() {        System.out.println("穿工作服");    }    @Override    protected void eat() {        System.out.println("买早餐");    }}
优点
模板方法模式通过把不变的行为搬移到超类,去除了子类中的重复代码。
子类实现算法的某些细节,有助于算法的扩展。
通过一个父类调用子类实现的操作,通过子类扩展增加新的行为,符合“开放-封闭原则”。

缺点
每个不同的实现都需要定义一个子类,这会导致类的个数的增加,设计更加抽象。

适用场景
在某些类的算法中,用了相同的方法,造成代码的重复。
控制子类扩展,子类必须遵守算法规则。



阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新力帝泊湾 帝泊湾 帝泊洱 赣州新力帝泊湾 帝泊洱即溶普洱茶珍 帝泊洱即溶普洱茶珍价格 天士力 帝泊洱 武汉新力帝泊湾 新力帝泊湾楼盘详情 惠州新力帝泊湾 帝泊洱即溶普洱茶珍作用 帝湖花园西王府 帝湖世家 郑州帝湖房价 珠江帝景苑赏湖轩 帝火丹王 火帝神尊 绝世武帝此书必火 火帝丹尊 帝火丹神 徐涂 宝贝太惹火帝少超庝的 大楚烈帝 离火剑心 吞天狂帝 火东 火帝神尊全文阅读免费 宝贝太惹火帝少超疼的 帝火 洪荒之我是妖帝鲲鹏 洪火火火 帝炎 帝煌大酒店 常宁帝煌大酒店 仓帝传说 仓煌 煌帝的皇位争夺战 神煌帝尊 冥夜孤痕 帝煌烤卤 帝煌 帝牌男装 帝牌坐便器怎么样 帝牌马桶 帝牌卫浴是几线品牌 帝牌洁具 帝特利威