- 浏览: 137859 次
文章分类
- 全部博客 (149)
- Java (41)
- 设计模式 (23)
- php (2)
- C++ (2)
- Linux (6)
- C (1)
- JavaEE (27)
- javascript (2)
- uplodify (1)
- Mybatis (2)
- Maven (4)
- Lucene (3)
- commons (1)
- Spring (7)
- SQL (3)
- mahout (1)
- MySQL (2)
- extjs4.2.1 (2)
- ubuntu (1)
- hadoop (1)
- hibernate (1)
- Spring JPA (2)
- JPA 2.0 (1)
- express (1)
- redis (2)
- angularjs (1)
- git (1)
- Python (1)
- logging (2)
最新评论
-
xlaohe1:
controller返回的是一个POJO对象,然后用@Resp ...
Spring MVC 4.X ResponseBody 日期类型Json 处理 -
TRAMP_ZZY:
能帮到你,我也很高兴。
Spring MVC 4.X ResponseBody 日期类型Json 处理 -
jobzjc:
第一段有帮到我。如果是非对象,Object方式传递的时候,第一 ...
Spring MVC 4.X ResponseBody 日期类型Json 处理 -
TRAMP_ZZY:
dingran 写道为什么,我怎么就没找到System > ...
Ubuntu 12.04 设置 IBus 开机启动 -
dingran:
为什么,我怎么就没找到System >> Pref ...
Ubuntu 12.04 设置 IBus 开机启动
Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template
Method lets subclasses redefine certain steps of an glgorithm without changing the algorithm's
structure.
定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可以重定义
该算法的某些特定步骤。
为了防止恶意的操作,一般模板方法都加上 final 关键字,不允许被覆写。
Method lets subclasses redefine certain steps of an glgorithm without changing the algorithm's
structure.
定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可以重定义
该算法的某些特定步骤。
为了防止恶意的操作,一般模板方法都加上 final 关键字,不允许被覆写。
public abstract class AbstractClass { protected abstract void doSomething(); protected abstract void doAnything(); public void templateMethod() { doSomething(); doAnything(); } } public class ConcreteClass1 extends AbstractClass { @Override protected void doSomething() { System.out.println("ConcreteClass1 doSomething"); } @Override protected void doAnything() { System.out.println("ConcreteClass1 doAnything"); } } public class ConcreteClass2 extends AbstractClass { @Override protected void doSomething() { System.out.println("ConcreteClass2 doSomething"); } @Override protected void doAnything() { System.out.println("ConcreteClass2 doAnything"); } } public class Clients { public static void main(String[] args) { AbstractClass class1 = new ConcreteClass1(); class1.templateMethod(); AbstractClass class2 = new ConcreteClass2(); class2.templateMethod(); } } 模板方法模式的优点 (1)封装不变部分,扩展可变部分。 (2)提取公共部分代码,便于维护。 模板方法使用的场景 (1)多个类有共有的方法,并且逻辑基本相同时。 (2)重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现。 (3)重构时,模板方法是一个经常使用的方法,把相同的代码抽取到父类中,然后通过钩子函数约束 其行为。 public abstract class HummerModel { public abstract void start(); public abstract void stop(); public abstract void alarm(); public abstract void engineBoom(); public void run() { this.start(); this.engineBoom(); if (this.isAlarm()) { this.alarm(); } this.stop(); } // 钩子方法 protected boolean isAlarm() { return true; } } public class HummerH1Model extends HummerModel { private boolean alarmFlag = true; @Override public void start() { System.out.println("H1 start."); } @Override public void stop() { System.out.println("H1 stop."); } @Override public void alarm() { System.out.println("H1 alarm."); } @Override public void engineBoom() { System.out.println("H1 enginBoom."); } protected boolean isAlarm() { return this.alarmFlag; } public void setAlarm(boolean isAlarm) { this.alarmFlag = isAlarm; } } public class HummerH2Model extends HummerModel { @Override public void start() { System.out.println("H2 start."); } @Override public void stop() { System.out.println("H2 stop."); } @Override public void alarm() { System.out.println("H2 alarm."); } @Override public void engineBoom() { System.out.println("H2 enginBoom."); } protected boolean isAlarm() { return false; } }
发表评论
-
设计模式-享元模式(Flyweight)
2014-06-20 13:11 551使用共享对象可有效地支持大量的细粒度的对象。要求细粒度的对象 ... -
设计模式-桥接模式
2014-06-19 17:12 328将抽象和实现解耦,使得两者可以独立地变化。 桥接模式使用了 ... -
设计模式-状态模式
2014-06-16 10:37 410状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像 ... -
设计模式-代理和动态代理模式
2014-06-13 14:57 4541.简单代理模式 interface Interface ... -
java 迭代器
2014-06-11 18:04 632public class ReversibleArrayL ... -
设计模式-内部类工厂模式
2014-06-10 23:33 533public interface Service { ... -
设计模式-迭代器模式
2014-06-10 14:37 457迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又 ... -
设计模式-模板方法
2014-06-05 13:00 360public abstract class Caffein ... -
设计模式-适配器模式
2014-06-03 22:14 429适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让 ... -
设计模式-命令模式
2014-06-02 23:24 374public interface Command { ... -
设计模式-工厂方法
2014-06-01 18:04 488public abstract class PizzaSt ... -
设计模式-观察者模式
2014-06-01 11:03 4751. 利用Java 内置的类和接口实现观察者模式 publ ... -
设计模式-策略模式
2013-12-16 12:50 481Define a family of algorithms ... -
设计模式-装饰模式
2013-12-16 12:49 457Attach additional responibili ... -
设计模式-责任链模式
2013-12-11 18:00 542Avoid coupling the sender of ... -
设计模式-命令模式
2013-12-08 15:11 439命令模式是一个高内聚的模式。 Encapsulate ... -
设计模式-中介者模式
2013-12-08 12:29 401在多个对象依赖的情况下,通过加入终结者角色,取消了多个对象 ... -
设计模式-建造者模式(生成器模式)
2013-11-20 11:35 531ArrayList 或者 HashMap 如果定义为类的成员 ... -
设计模式-抽象工厂模式
2013-11-18 15:49 428Provide an interface for creati ... -
设计模式-工厂方法模式
2013-11-18 08:59 621Define an interface for creatin ...
相关推荐
### 设计模式之模板方法模式解析 #### 一、引言 在软件开发过程中,我们经常面临这样的场景:有一些步骤是固定的,而某些步骤则可能因具体实现而异。为了解决这类问题,设计模式中引入了一种叫做“模板方法模式”的...
模板方法模式是一种行为设计模式,它允许在定义行为框架的同时,延迟部分具体步骤到子类中实现。这种模式主要用于在父类中定义算法的骨架,而将一些步骤的实现细节留给子类去完成,从而使得不同的子类可以重用相同的...
模板方法模式(Template Method Pattern)是一种行为设计模式,它允许在父类中定义算法的框架,然后由子类提供具体的实现。这种模式的核心是“模板方法”,它在父类中定义了一个操作的步骤顺序,并将某些步骤声明为...
JAVA-设计模式-行为型模式-模板方法模式
模板方法模式是设计模式中行为型模式的一种,它在软件工程中扮演着非常重要的角色,尤其是在Java编程中。模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。它允许子类不改变一个算法的结构即可重...
c++设计模式-行为型模式-模板方法模式;qt工程;c++简单源码; 模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重...
(1) 系统根据账号和密码验证用户信息,如果用户信息错误,系统显示出错提示 (2) 如果用户信息正确,则根据用户类型的不同使用不同的利息计算公式计算利息(如活期
模板模式是一种行为设计模式,它在面向对象编程中扮演着重要的角色。此模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。这样,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤...
模板方法模式是面向对象设计模式中的行为模式之一,它在Java等面向对象编程语言中有着广泛的应用。模板方法模式的主要思想是在一个抽象类中定义一个算法的骨架,而将一些步骤延迟到子类中实现。这样,子类可以重写...
设计模式是软件工程中的重要概念,它们是经过时间和实践验证的解决特定问题的模板,能够提升代码的可读性、可维护性和复用性。而Qt4作为一个强大的开源库,提供了丰富的功能,使得开发者能够在多个操作系统上构建...
在设计模式中,模板方法模式中模板和生活中模板概念非常类似,下面让我们就详细介绍模板方法的定义,大家可以根据生活中模板的概念来理解模板方法的定义 1. 模板方法模式的定义 模板方法模式——在一个抽象类中定义...
1. 概述 定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个... 3.2 模板方法模式代码实现 /// /// 抽象类 /// public abstract class AbstractClass { // 一些抽象行为
设计模式通常分为三类:创建型模式(如工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式),结构型模式(如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式、享元模式)以及行为型模式(如...
模板方法模式作为设计模式之一,是一种行为模式,它在面向对象设计中扮演着关键角色。该模式允许我们在抽象类中定义一个算法的骨架,而将一些步骤延迟到子类中。这种做法使得子类可以不改变算法的结构即可重定义算法...
模板模式是一种行为设计模式,它使你能在代码中定义一个操作的不同步骤,并让子类决定这些步骤如何执行。模板模式提供了创建算法结构的通用接口,而具体的实现则由子类来完成。这种模式允许在不修改原有代码的情况下...
C++设计模式是一种在软件开发中经过验证的解决常见问题的方法论,它为软件开发提供了标准的解决方案。在本资源中,"C++设计模式-基于QT4开源跨平台开发框架 源码",我们将重点探讨如何在C++编程语言中结合QT4框架来...
例如,代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法模式(Factory Method Pattern)、抽象工厂模式(Abstract Factory Pattern)、适配器模式(Adapter Pattern)、模板方法模式(Template ...
设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题。这些模式是由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师,通常被称为GoF(Gang of Four),在他们的经典著作...