設計模式,模板方法模式

模板方法模式是採用抽象類來實現的。在抽象類定義一個模板方法,在模板方法中,按照固定的順序來調用基本方法。

同時模板方法一般被final public修飾。

模板方法的uml類圖:

舉一個車子的例子。

寶馬車跑動,需要啓動,鳴笛,停止;

奔馳車跑動,也是需要啓動,鳴笛,停止;

package com.learn.design.template;

/**
 * Created by liuyingzi on 2018/9/6.
 */
public abstract class Car {
     abstract  void start();
     abstract  void stop();
     abstract  void alarm();

    public final void run(){
        this.start();
        this.alarm();
        this.stop();
    }
}
package com.learn.design.template;

/**
 * Created by liuyingzi on 2018/9/6.
 */
public class BWMCar extends  Car {
    @Override
     void start(){
        System.out.println("BWM start ....");
     }

    @Override
    void alarm() {
        System.out.println("BWM alarm ....");
    }

    @Override
    void stop() {
        System.out.println("BWM stop ....");
    }
}
package com.learn.design.template;

/**
 * Created by liuyingzi on 2018/9/6.
 */
public class BenZCar extends  Car {
    @Override
    void start(){
        System.out.println("BenZCar start ....");
    }

    @Override
    void alarm() {
        System.out.println("BenZCar alarm ....");
    }

    @Override
    void stop() {
        System.out.println("BenZCar stop ....");
    }
}

package com.learn.design.template;

import com.learn.design.builder.KFCDirector;
import com.learn.design.builder.TaocanKFCBuilder1;
import com.learn.design.builder.TaocanKFCBuilder2;

/**
 * Created by liuyingzi on 2018/9/5.
 */
public class MainTest {
    /**
     *
     * @param args
     */
    public static void main(String[] args){
        BWMCar bwm =  new BWMCar();
        bwm.run();

        BenZCar benz = new BenZCar();
        benz.run();

    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章