第二章 设计模式之模板模式

来源:互联网 发布:香蕉网络电视手机版 编辑:程序博客网 时间:2024/06/11 17:53

             模板模式有两种类:1.模板类   2.具体算法类

             模板类

             模板类规定了算法骨架既执行的逻辑顺序,模板类中也将一些公共重用方法给提取出来,在模板类中有三种方法:

             1.模板方法:规定具体方法的调用逻辑顺序,也就是说它只负责一些方法按顺序执行,而不管这些方法的具体实现。

             2.公共方法:将子类中的公共方法提到了模板类中。

             3.易变方法:模板类将这些易变方法交由子类去实现,这些易变方法可以是抽象的也可以是具体的

             

            具体算法类

             具体算法类继承了模板类,并且重写了那些易变的方法,这些算法类对那些易变方法的重写都有着自己的特色


           调用过程

             实例一个模板类变量,模板类变量是指向子类实例的,然后再通过模板变量调用模板类里的模板方法来完成功能
           

           代码示例

              模板类
       
package com.model.templet;/** * 模板类 * 建造房子,我把分为三步 * 1.打地基   2.砌墙    3.封顶 * @author Administrator * */public abstract class TempletBuilder {//打地基方法(公共方法)protected void fundation(){System.out.println("给房子打地基");}//砌墙(易变方法)protected abstract void buildWall();//封顶(易变方法)protected abstract void buildRoot();//建造房屋的过程(模板方法)public void build(){System.out.println("做房子三步曲");fundation();buildWall();buildRoot();}}

            具体类

package com.model.templet;/** * 建造高楼大厦类 * @author Administrator * */public class LargeBuilding extends TempletBuilder{@Overrideprotected void buildWall() {System.out.println("建造高楼大厦:用特种玻璃做墙");}@Overrideprotected void buildRoot() {System.out.println("建造高楼大厦:用水泥板封顶");}}


package com.model.templet;/** * 建造竹林小屋类 * @author Administrator * */public class SmallBuilding extends TempletBuilder{@Overrideprotected void buildWall() {System.out.println("建造竹林小屋:用竹子做墙");}@Overrideprotected void buildRoot() {System.out.println("建造竹林小屋:用茅草封顶");}}

测试类

package com.model.templet;public class TempletModelMain {public static void main(String[] args){//建造高楼大厦TempletBuilder builder = new LargeBuilding();builder.build();System.out.println("*****************************");TempletBuilder builder2 = new SmallBuilding();builder2.build();}}


输出结果:

做房子三步曲给房子打地基建造高楼大厦:用特种玻璃做墙建造高楼大厦:用水泥板封顶*****************************做房子三步曲给房子打地基建造竹林小屋:用竹子做墙建造竹林小屋:用茅草封顶

我个人觉得模板模式的好处:

1.将公共行为提出出来,减少代码的重用,易变的行为延迟到子类中去实现,当有什么变化的时候,我们只需更改子类就可以了,提现了”开放---封闭“原则。

2.通过模板类规定了算法的骨架,将逻辑过程封装起来,这样更加稳定和安全



0 0
原创粉丝点击