模板方法模式

来源:互联网 发布:星光大道网络投票 编辑:程序博客网 时间:2024/06/05 05:14

我们做一些事情都有一个步骤,而相似事的步骤是一致的。就拿我们打10086来说,有人查余额和有人要人工服务,但他们的不知都分下面三步:拨号、选择服务、评分。这种最适合用模板方法,实现如下:

public class TemplateMethod {    //模板抽象方法    public abstract static class Template10086 {        //1.拨打10086        public void takeNumber(){            System.out.println("拨打10086");        }        //2.办理具体的业务:这里留给子类来实现!!!        public abstract void transact();        //3.给客服评分        public void evaluate(){            System.out.println("反馈评分");        }        //模板方法,一定的流程        public final void process(){            this.takeNumber();            this.transact();//这里则是具体的模板方法函数            this.evaluate();        }    }    public static void main(String[] args) {        Template10086 查余额 = new Template10086(){//匿名内部子类            @Override            public void transact() {                System.out.println("先按1再按2");            }        };        System.out.println("查余额:");        查余额.process();        Template10086 人工服务 = new Template10086(){            @Override            public void transact() {                System.out.println("先按1再按0");            }        };        System.out.println("\n人工服务:");        人工服务.process();    }}输出:查余额:拨打10086先按1再按2反馈评分人工服务:拨打10086先按1再按0反馈评分

模板方法模式适用于:有各个方法组成的固定流程,子方法实现可能不同(可以是多个)。

觉得容易理解的话面向对象的23种设计模式点这里

原创粉丝点击