当前位置: 首页 > 后端技术 > Java

模板方法模式

时间:2023-04-02 09:54:30 Java

定义了一个算法骨架(模板),算法中的一些步骤是开放给子类修改的,以区分子类。比如炮兵、汽车兵、步兵等可能一起在军队里。他们必须每天训练。训练内容是射击和跑步。如果有一些培训的话,那么他们培训的内容可能是这样的。08:00跑步10:00专业训练A14:00专业训练B16:00射击训练以上是部队制定的统一训练框架,那么炮兵训练可能是08:00跑步10:00装弹训练A14:00空中防御训练B16:00射击训练模板方法模式可能有以下作用抽象类:定义统一的方法内容,定义子类特殊实现的抽象方法,将这些方法组合成一个算法模板(同时可能有一些hook里面的方法,这些hooks的方法实现是空的,也就是说子类可以重写实现它,也可以不重写,是否需要这一步就看你自己的需要了)。具体实现类:继承实现抽象类和抽象方法下面以cooking为例实现模板方法模式抽象类——CookpublicabstractclassCook{finalvoidtemplate(){putOil();放肉();放蔬菜();放盐();putAginomoto();板加载();}finalvoidputOil(){System.out.println("放油");}抽象无效putMeat();抽象无效putVegetable();最终无效putSalt(){System.out.println("放盐");};//放入味精——根据您的喜好voidputAginomoto(){}finalvoidplateLoading(){System.out.println("Packing");}}具体实现——炒韭菜、炒芹菜publicclassCookLeekextendsCook{@OverridevoidputMeat(){System.out.println("放入牛肉");}@OverridevoidputVegetable(){System.out.println("放入韭菜");}}publicclassCookCeleryextendsCook{@OverridevoidputMeat(){System.out.println("putpork");}@OverridevoidputVegetable(){System.out。println("放入芹菜");}@OverridevoidputAginomoto(){System.out.println("放入味精");}}TestpublicclassTemplateTest{@Testpublicvoidtest(){Cookcook1=newCookCelery();cook1.模板();System.out.println("====================");煮cook2=newCookLeek();cook2.模板();}}======测试======猪肉放油,放芹菜,放盐,放味精装盘=====================加油,加牛肉,加韭菜,加盐,装盘