《设计模式-模板方法模式.ppt》由会员分享,可在线阅读,更多相关《设计模式-模板方法模式.ppt(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java设计模式之设计模式之模板方法模式模板方法模式 引子:引子:这是一个很是一个很简单的模式,却被非常广泛的使用。之所以的模式,却被非常广泛的使用。之所以简单是因是因为在在这个模式中个模式中仅仅使用到了使用到了继承关系。承关系。Java语言言只支持只支持单重重继承而不支持多重承而不支持多重继承承,所以引入接口的概念,所以引入接口的概念,通通过接口,来客服接口,来客服单继承的缺点。承的缺点。其其实,继承承还是有很多自身的是有很多自身的优点所在。只是被大家点所在。只是被大家滥用的似乎缺点更加明用的似乎缺点更加明显了。合理的利用了。合理的利用继承关系,承关系,还是能是能对我我们的系的系统设计起到很
2、好的作用的。而模板方法模式就是其起到很好的作用的。而模板方法模式就是其中的一个使用范例。中的一个使用范例。定定义:1.模板方法模式:模板方法模式:简单理解就是:将关理解就是:将关键的的业务方法、方法、逻辑或算法封装起来,而把具体的一些容易或算法封装起来,而把具体的一些容易变化的步化的步骤留留给子子类来来进行具体不同的行具体不同的设置,具体表置,具体表现就是就是实现父父类的方法。的方法。2.模板方法模式模板方法模式:把我把我们不知道具体不知道具体实现的步聚封装成的步聚封装成抽象方法,提供一些按正确抽象方法,提供一些按正确顺序序调用它用它们的具体方法的具体方法(这些些具体方法具体方法统称称为模板方
3、法模板方法),这样构成一个抽象基构成一个抽象基类。子。子类通通过继承承这个抽象基个抽象基类去去实现各个步聚的抽象方法,而工作流各个步聚的抽象方法,而工作流程却由父程却由父类来控制。来控制。3.模板方法模式模板方法模式:定定义一个操作中的算法的骨架,将一一个操作中的算法的骨架,将一些步聚声明些步聚声明为抽象方法迫使子抽象方法迫使子类去去实现。不同的子。不同的子类可以以可以以不同的方式不同的方式实现这些抽象方法。些抽象方法。设计思想:思想:作作为模板的方法定模板的方法定义在父在父类(父(父类为抽象抽象类),而方法),而方法定定义使用抽象方法,使用抽象方法,实现抽象方法的是子抽象方法的是子类,要在子
4、,要在子类实现方法,才能决定具体的操作。如果在不同的子方法,才能决定具体的操作。如果在不同的子类执行不同行不同实现就可以就可以发展出不同的展出不同的处理内容。不理内容。不过,无,无论在哪个子在哪个子类执行任何一种行任何一种实现,处理的大致流程都理的大致流程都还是要依照父是要依照父类制定的制定的方式。方式。适用情况适用情况:一次性一次性实现一个算法的不一个算法的不变的部分,并将可的部分,并将可变的行的行为留留给子子类来来实现。各子各子类中公共的行中公共的行为应被提取出来并集中到一个公共父被提取出来并集中到一个公共父类中以避免代中以避免代码重复。其重复。其实这可以可以说是一种好的是一种好的编码习惯
5、了了。控制子控制子类扩展。模板方法只在特定点展。模板方法只在特定点调用操作,用操作,这样就就只允只允许在在这些点些点进行行扩展。比如上面展。比如上面runBare()方法就只()方法就只在在runTest前面适用前面适用setUp方法。如果你不愿子方法。如果你不愿子类来修改你的来修改你的模板方法定模板方法定义的框架,你可以采用两种方式来做:一是在的框架,你可以采用两种方式来做:一是在API中不体中不体现出你的模板方法;二、将你的模板方法置出你的模板方法;二、将你的模板方法置为final就可以了。就可以了。总结:综上所述:上所述:可以看出,使用模板方法模式可以将代可以看出,使用模板方法模式可以将代码的的公共行公共行为提取出来,达到复用的目的。而且,在模板方法模提取出来,达到复用的目的。而且,在模板方法模式中,是由父式中,是由父类的模板方法来控制子的模板方法来控制子类中的具体中的具体实现。这样你在你在实现子子类的的时候,根本不需要候,根本不需要对业务流程有太多的了解。流程有太多的了解。谢谢!
限制150内