zoukankan      html  css  js  c++  java
  • 北风设计模式课程---25、模板方法模式

    北风设计模式课程---25、模板方法模式

    一、总结

    一句话总结:

    模板方法就是指定算法步骤,具体不同的子类实现不同的算法

    1、什么是模板方法模式?

    指定算法步骤,具体不同的子类实现不同的算法:它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。

    Template Method模式也叫模板方法模式,是
    行为模式之一,它把具有特定步骤算法中的某些
    必要的处理委让给抽象方法,通过子类继承对抽
    象方法的不同实现改变整个算法的行为。

    2、模板方法模式的应用场景?

    - 具有统一的操作步骤或操作过程:在模板类中
    - 具有不同的操作细节:在具体的类中
    - 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同

    3、模板方法模式的角色和职责?

    AbstractClass:抽象类的父类:
    ConcreteClass:具体的实现子类:
    templateMethod():模板方法:MakeCar.java
    method1()与method2():具体步骤方法:MakeBus.java、MakeJeep.java、MakeKa.java

    4、模板方法模式 为什么叫 模板方法模式?

    模板方法就是指定算法步骤,具体不同的子类实现不同的算法
    /*
     * 组装车
     */
    public abstract class MakeCar {
        //组装车头
        public abstract void makeHead();
        
        //组装车身
        public abstract void makeBody();
        
        //组装车尾
        public abstract void makeTail();
        
        public void make() {
            this.makeHead();
            this.makeBody();
            this.makeTail();
        }
    }

    二、内容在总结中

    1、相关知识

    AbstractClass:抽象类的父类:
    ConcreteClass:具体的实现子类:
    templateMethod():模板方法:MakeCar.java
    method1()与method2():具体步骤方法:MakeBus.java、MakeJeep.java、MakeKa.java

     

    2、代码

    AbstractClass:抽象类的父类:

    ConcreteClass:具体的实现子类:

    templateMethod():模板方法:MakeCar.java

    MakeCar.java

    /*
     * 组装车
     */
    public abstract class MakeCar {
        //组装车头
        public abstract void makeHead();
        
        //组装车身
        public abstract void makeBody();
        
        //组装车尾
        public abstract void makeTail();
        
        public void make() {
            this.makeHead();
            this.makeBody();
            this.makeTail();
        }
    }

    method1()与method2():具体步骤方法:MakeBus.java、MakeJeep.java、MakeKa.java

    MakeBus.java、

    public class MakeBus extends MakeCar {
    
        public void makeBody() {
            System.out.println("bus:组装车身");
        }
    
        public void makeHead() {
            System.out.println("bus:组装车头");
        }
    
        public void makeTail() {
            System.out.println("bus:组装车尾");
        }
    }

    MakeJeep.java、

    public class MakeJeep extends MakeCar {
    
        public void makeBody() {
            System.out.println("jeep:组装车身");
        }
    
        public void makeHead() {
            System.out.println("jeep:组装车头");
        }
    
        public void makeTail() {
            System.out.println("jeep:组装车尾");
        }
    
    }

    MakeKa.java

    public class MakeKa extends MakeCar {
    
        public void makeBody() {
            System.out.println("ka:组装车身");
        }
    
        public void makeHead() {
            System.out.println("ka:组装车头");
        }
    
        public void makeTail() {
            System.out.println("ka:组装车尾");
        }
        
    }

    客户端实现:

    MainClass.java

    public class MainClass {
        public static void main(String[] args) {
            MakeCar bus = new MakeBus();
    //        bus.makeHead();
    //        bus.makeBody();
    //        bus.makeTail();
            bus.make();
            
            System.out.println("-------------------");
            
            MakeCar jeep = new MakeJeep();
    //        jeep.makeHead();
    //        jeep.makeBody();
    //        jeep.makeTail();
            jeep.make();
            
            System.out.println("-------------------");
            
            MakeCar ka = new MakeKa();
            ka.make();
        }
    }
     
  • 相关阅读:
    Android studio关于点击事件后的页面跳转,选择完成后返回(onActivityResult)
    关于Android对话框简单实用方法总结
    Eclipse键盘输出文字,显示到屏幕上方法
    indexOf实际试用方法
    LiteOS裸机驱动移植01-以LED为例说明驱动移植
    LiteOS内核教程06-内存管理
    LiteOS内核教程05-互斥锁
    LiteOS内核教程04-信号量
    LiteOS内核教程03-任务管理
    LiteOS内核教程02-HelloWorld
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/11080000.html
Copyright © 2011-2022 走看看