好记性不如铅笔头

java, 编程, 设计模式

设计模式学习笔记:模板模式

模板模式

github:

【 https://github.com/cstriker1407/design_pattern 】

模板模式比较简单,就直接贴代码了。

/*
 * 父类设计成抽象类,供子类来继承。
 */
abstract class CarModel
{
        /* start stop alarm 对外部调用者来讲不可见,可以设计为protected */
        protected abstract void start();
        protected abstract void stop();
        protected abstract void alarm();
        /* run 设置为final,可以将业务固化,防止子类重写 */
        public final void run()
        {
                start();
                if (isAlarm())
                {
                        alarm();
                }
                stop();
        }
        /* 所谓的钩子方法,子类可以实现,这样可以实现业务的可定制性。   */
        protected boolean isAlarm()
        {
                return true;
        }
}

class ACar extends CarModel
{
        @Override
        protected void start()
        {
                System.out.println("A Car Start");
        }
        @Override
        protected void stop()
        {
                System.out.println("A Car Stop");
        }
        @Override
        protected void alarm()
        {
                System.out.println("A Car Alarm");
        }
        @Override
        protected boolean isAlarm()
        {
                return false;
        }
}

class BCar extends CarModel
{
        @Override
        protected void start()
        {
                System.out.println("B Car Start");
        }
        @Override
        protected void stop()
        {
                System.out.println("B Car Stop");
        }
        @Override
        protected void alarm()
        {
                System.out.println("B Car Alarm");
        }
        @Override
        protected boolean isAlarm()
        {
                return true;
        }
}

public class TemplateTest
{
        public static void test()
        {
                ACar aCar = new ACar();
                aCar.run();
                BCar bCar = new BCar();
                bCar.run();
        }
}

 备注:

1)模板模式的定义省略,后面可能会补齐。

发表评论

5 × 5 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据