第150章
大B:“模板方法模式把我们不知道具体实现的步骤封装成抽象方法,提供一些按正确顺序调用它们的具体方法(这些具体方法统称为模板方法),这样构成一个抽象基类。子类通过继承这个抽象基类去实现各个步聚的抽象方法,而工作流程却由父类来控制。”
小A:“什么是模板方法模式?”
大B:“定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。”
小A:“要如何去实现它哩?”
大B:“模板模式,是众多模式之中用得比较多的模式,在具体的应用中,我们已经经意或者不经意的采用了这种模式。其是先写定义,后实现,然后再调用,将实现与调用分开,从而利用增强了程序的延展性。模板模式是利用了虚函数的多态性,我们可以实现,也可以不实现。”
publicabstractintgetSpendingLimit(intcustomerId);
小A:“通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步聚,并确定了这些步聚的执行顺序。但是某些步聚的具体实现是未知的,或者是某些步聚的实现与具体的环境相关。”
publicabstractclassAbstractOrder{
publicOrderplaceOrder(intcustomerId,ListorderItemList){
intorderId=saveOrder(customerId,total,orderItemList);
publicabstractintsaveOrder(intcustomerId,inttotal,ListorderItemList);
rendercode;
AbstractOrder在placeOrder方法中确定了定单处理的逻辑,placeOrder方法也称为模板方法。在placeOrder中调用了三个抽象方法。子类只需要去实现三个抽象方法,而无需要去关心定单处理的逻辑。
for(inti=0;igetSpendingLimit(customerId)){
thrownewBusinessException(“超出信用额度”+getSpendingLimit(customerId));
returnnewOrderImpl(orderId,total);
publicabstractintgetOrderItemPrice(OrderItemorderItem);
inttotal=0;
其他人正在读 :【从婴儿开始入道】【我的1992在延续】【综漫:这友好交流系统也太友好了】【明日方舟之深海的呼唤】【制符人】【军婚七零:锦鲤附体,拐个军官去领证】【我们的家族没落了】【趁校花青涩,忽悠她给我做老婆!】【美利坚:我的时代】【人间第一刀】【周元赵蒹葭】【雌雄同体】【末世之世纪轮回】【救命,妈妈送了只魅魔给我!】【我穿越了,不可思议】【遥远的救世主】【开局在出租屋里捡到一个亿】【嫁高门】【香江:风再起时】【高武:我的命格太古神话级】【九龙归一诀】【港综从怒火重案开始】【神算小村医】【正义的使命】【文娱之顶流艺术家】【天下第一萌夫】【影视:流窜在诸天的收集员】【斗罗之绝世唐门红尘劫】【从诛仙开始的修真者】【末世:从加点开始无限进化】