`

【转】设计模式——模板方法模式(Template Method)

 
阅读更多

一个抽象类中,有一个主方法,再定义1...n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用 就是在AbstractCalculator类中定义一个主方法calculate,calculate()调用spilt()等,Plus和Minus分别继承AbstractCalculator类,通过对AbstractCalculator的调用实现对子类的调用

◆AbstractCalculator父类:

public abstract class AbstractCalculator {

 

/*主方法,实现对本类其它方法的调用*/

public final int calculate(String exp,String opt){

int array[] = split(exp,opt);

return calculate(array[0],array[1]);

}

 

/*被子类重写的方法*/

abstract public int calculate(int num1,int num2);

 

public int[] split(String exp,String opt){

String array[] = exp.split(opt);

int arrayInt[] = new int[2];

arrayInt[0] = Integer.parseInt(array[0]);

arrayInt[1] = Integer.parseInt(array[1]);

return arrayInt;

}

}

 

◆实现类:

public class Plus extends AbstractCalculator {

 

 

@Override

public int calculate(int num1,int num2) {

return num1 + num2;

}

}

 

◆测试:

public class StrategyTest {

 

 

public static void main(String[] args) {

String exp = "8+8";

AbstractCalculator cal = new Plus();

int result = cal.calculate(exp, "\\+");

System.out.println(result);

}

}

 

首先将exp和"\\+"做参数,调用AbstractCalculator类里的calculate(String,String)方法,在calculate(String,String)里调用同类的split(),之后再调用calculate(int ,int)方法,从这个方法进入到子类中,执行完return num1 + num2后,将值返回到AbstractCalculator类,赋给result,打印出来。

正好验证了我们开头的思路。

--------------------- 

作者:panzihao_beijing 

来源:CSDN 

原文:https://blog.csdn.net/PanZiHao_BeiJing/article/details/80429789 

版权声明:本文为博主原创文章,转载请附上博文链接!

分享到:
评论

相关推荐

    python 模板方法模式(示例)

    设计模式——模板方法模式模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟至子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤使用场景:当不变和可...

    设计模式-模板方法模式ppt

    ### 设计模式之模板方法模式解析 #### 一、引言 在软件开发过程中,我们经常面临这样的场景:有一些步骤是固定的,而某些步骤则可能因具体实现而异。为了解决这类问题,设计模式中引入了一种叫做“模板方法模式”的...

    设计模式-Java语言中的应用(pdf)

    《设计模式——Java语言中的应用》是一本专为Java开发者深入理解面向对象设计而编写的经典书籍。设计模式是软件工程领域中经过实践验证的、解决常见问题的有效方案,它们代表了在特定上下文中,针对特定问题的最优...

    Python设计模式之模板方法模式实例详解

    本文实例讲述了Python设计模式之模板方法模式。分享给大家供大家参考,具体如下: ...设计模式——模板方法模式 模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟至子

    11.设计模式-模板方法模式1

    模板方法模式(Template Method Pattern)是一种行为设计模式,它允许在父类中定义算法的框架,然后由子类提供具体的实现。这种模式的核心是“模板方法”,它在父类中定义了一个操作的步骤顺序,并将某些步骤声明为...

    设计模式可复用面向对象软件的基础.zip

    5.10 TEMPLATE METHOD(模板方法) —类行为型模式 214 5.11 VISITOR(访问者)—对象行为型 模式 218 5.12 行为模式的讨论 228 5.12 1 封装变化 228 5.12.2 对象作为参数 228 5.12.3 通信应该被封装还是被分布 229 ...

    设计模式代码——c#

    4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) 8. 装饰模式(Decorator Pattern) 9. 组合模式(Composite Pattern...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    3. **行为型模式**:包括策略(Strategy)、模板方法(Template Method)、观察者(Observer)、迭代器(Iterator)、访问者(Visitor)、责任链(Chain of Responsibility)、命令(Command)、备忘录(Memento)、...

    23种 设计模式---面向对象的基本原则

    - 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 - 访问者模式(Visitor):表示一个作用于某对象...

    设计模式精解——GoF23中设计模式解析

    ### 设计模式精解——GoF23中设计模式解析 #### 重要性与起源 设计模式是软件工程领域的一项重要研究,它提供了一系列解决常见软件设计问题的模板。GoF23指的是由Erich Gamma、Richard Helm、Ralph Johnson和John ...

    模板方法模式----设计模式系列

    模板方法模式是面向对象设计模式的一种,它在行为模式中占据重要地位。此模式的核心思想是定义一个操作的框架,允许子类在这个框架内自定义具体的行为。这为代码复用和实现相同逻辑的不同实现提供了方便,同时也遵循...

    X-gen PPT下载——《研磨设计模式》 实战

    包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)...Strategy)、模板方法模式(Template Method)和访问者模式(Visitor)...

    HeadFirst设计模式PPT

    行为型模式涉及对象之间的责任分配,包括模板方法模式(Template Method)、策略模式(Strategy)和观察者模式(Observer)。模板方法模式定义了一个操作中的算法骨架,允许子类在其间填充具体步骤;策略模式定义一...

    设计模式PPT---25种设计模式详解

    9. 模板方法模式(Template Method):在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。 10. 访问者模式(Visitor):在不改变类结构的情况下,为对象添加新的操作。 这份PPT涵盖了设计模式的全貌,...

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    ### 设计模式精解——GoF 23种设计模式解析及C++实现 #### 0. 引言 设计模式作为面向对象编程的核心组成部分,是软件开发者在长期实践中总结出来的最佳实践。通过深入理解这些设计模式,我们可以更好地进行面向...

    系统架构设计师 设计模式

    行为型模式则关注对象间的通信和职责分配,如观察者模式(Observer)、模板方法模式(Template Method)和责任链模式(Chain of Responsibility)。这些模式有助于实现对象间的协作,提高代码的灵活性。比如,观察者...

    模板方法设计

    在压缩包中的"07_templatemethod"可能包含了更多关于模板方法设计模式的示例代码和详细解释,包括但不限于更多的抽象类和具体类实现、不同场景的应用实例以及相关的讨论。通过查看这些文件,你可以更深入地理解并...

    设计模式-可复用面向对象软件的基础

    其中包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(...Strategy)、模板方法模式(Template Method)和访问者模式(Visitor)...

Global site tag (gtag.js) - Google Analytics