65、模板模式

65、模板模式

00:00
04:11

在模板模式(Template Pattern)中,
一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
抽象父类(AbstractClass):实现了模板方法,定义了算法的骨架。
具体类(ConcreteClass):实现抽象类中的抽象方法,即不同的对象的具体实现细节。




模板模式意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
模板模式主要解决:一些方法通用,却在每一个子类都重新写了这一方法。


优点: 1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。 3、行为由父类控制,子类实现。
缺点: 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。


使用场景: 1、有多个子类共有的方法,且逻辑相同。
           2、重要的、复杂的方法,可以考虑作为模板方法。


注意事项:为防止恶意操作,一般模板方法都加上 final 关键词。
publicabstractclassGame{abstractvoidinitialize(); abstractvoidstartPlay(); abstractvoidendPlay(); //模板publicfinalvoidplay(){//初始化游戏initialize(); //开始游戏startPlay(); //结束游戏endPlay(); }}


publicclassCricketextendsGame{ @OverridevoidendPlay(){System.out.println("Cricket Game Finished!"); } @Overridevoidinitialize(){System.out.println("Cricket Game Initialized! Start playing."); } @OverridevoidstartPlay(){System.out.println("Cricket Game Started. Enjoy the game!"); }}

以上内容来自专辑
用户评论
  • 听友457054286

    老板有文档吗