介绍
本篇文章为大家展示了怎么Java项目中使用模板方法模式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
模拟抽象类:
/* * *,模板方法模式的模板框架(以去银行办理业务为例) *,@description: */public abstract  class TempletBankFrame  {/*,比如:去柜台办理银行卡业务*,*/public final  void handleBankCard (), {/*,第一步:进入银行大厅取号*,*/takeNumber ();/*,第二步:填写办理业务的相关单据*,*/如果(! isNeedThisMethod()){//特殊情况可以添加判断,如我之前有填写好单子,那今天就不必再填写了 writeBill (); }/*,第三步:等待工作人员叫号*,*/waitCall ();/*,第四步:办理业务*,*/handleCard (); }/*,取号步骤是不需要更改的,所以我们用私人修饰*,*/private void  takeNumber (), { System.out.println才能(“办理银行业务请取号!“); }/*,办理的业务不同,填写的内容不同,所以我们用保护修饰,让子类去处理具体业务*,*/protected abstract  void writeBill ();/*,等待叫号步骤也是不需要更改的,所以我们用私人修饰*,*/private void  waitCall (), { System.out.println才能(“办理银行业务请取号!“); }/*,办理的业务不同,用保护修饰,让子类去处理具体业务*,*/protected abstract  void handleCard ();/*定义一个钩子方法:由抽象类声明并实现,而子类会加以扩展。通常抽象类给出的实现是一个空实现,作为方法的默认实现,* */protected abstract  boolean isNeedThisMethod (); }
具体实现类:如办理取钱
/* * *,办理取钱业务 *,@description: */public class  GetMoney extends TempletBankFrame  { @Override protected void  writeBill (), { System.out.println才能(“我在填写取钱的单据!“); } @Override protected void  handleCard (), { System.out.println才能(“我要取500年万大洋“); } @Override protected boolean  isNeedThisMethod (), { System.out.println才能(“我已经填写过单子,今天就直接等待叫号了吧!“); return 才能;真实; } }
具体实现类:如我是去办银行卡
/* * *,办理银行卡 *,@description: */public class  TackCard extends TempletBankFrame  { @Override protected void  writeBill (), { System.out.println才能(“我填写的是办理银行卡单据“); } @Override protected void  handleCard (), { System.out.println才能(“我在办卡,即将完成!“); } @Override protected boolean  isNeedThisMethod (), { return 才能;假; } }
测试类
/* * *,模板方法模式测试类 *,@description: */public class  Test { public static  void main (String [], args), { GetMoney 钱=new GetMoney (); money.handleBankCard();//调用模板中的办理业务方法 System.out.println(“- - - - -分隔线- - - - - -“); TackCard 卡=new TackCard (); card.handleBankCard (); } }
最后的输出结果:
办理银行业务请取号! 我已经填写过单子,今天就直接等待叫号了吧! 办理银行业务请取号! 我要取500年万大洋 - - - - -分隔线- - - - - - 办理银行业务请取号! 我填写的是办理银行卡单据 办理银行业务请取号! 我在办卡,即将完成!
上述内容就是怎么Java项目中使用模板方法模式,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。