- 浏览: 116191 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
ccfangle:
bestchenwu 写道什么时候用“==”还是“equals ...
操作符“==”与对象的equals()方法 -
bestchenwu:
什么时候用“==”还是“equals()”,跟你是把这个对象作 ...
操作符“==”与对象的equals()方法
An application framework allows you to inherit from a class or set of classes and create a new application, reusing most of the code in the existing classes and overriding one or more methods in order to customize the application to your needs. A fundamental concept in the application framework is the Template Method which is typically hidden beneath the covers and drives the application by calling the various methods in the base class (some of which you have overridden in order to create the application).
For example, whenever you create an applet you’re using an application framework: you inherit from JApplet and then override init( ) . The applet mechanism (which is a Template Method ) does the rest by drawing the screen, handling the event loop, resizing, etc.
An important characteristic of the Template Method is that it is defined in the base class and cannot be changed. It’s sometimes a private method but it’s virtually always final . It calls other base-class methods (the ones you override) in order to do its job, but it is usually called only as part of an initialization process (and thus the client programmer isn’t necessarily able to call it directly).
//: templatemethod:TemplateMethod.java
// Simple demonstration of Template Method.
package templatemethod;
import junit.framework.*;
abstract class ApplicationFramework {
public ApplicationFramework() {
templateMethod(); // Dangerous!
}
abstract void customize1();
abstract void customize2();
final void templateMethod() {
for(int i = 0; i < 5; i++) {
customize1();
customize2();
}
}
}
// Create a new "application":
class MyApp extends ApplicationFramework {
void customize1() {
System.out.print("Hello ");
}
void customize2() {
System.out.println("World!");
}
}
public class TemplateMethod extends TestCase {
MyApp app = new MyApp();
public void test() {
// The MyApp constructor does all the work.
// This just makes sure it will complete
// without throwing an exception.
}
public static void main(String args[]) {
junit.textui.TestRunner.run(TemplateMethod.class);
}
} ///:~
The base-class constructor is responsible for performing the necessary initialization and then starting the “engine” (the template method) that runs the application (in a GUI application, this “engine” would be the main event loop). The client programmer simply provides definitions for customize1( ) and customize2( ) and the “application” is ready to run.
//上面的例子比较简单,很容易就能看明白,在时间当中可就没有那么容易。主要是体现在抽象函数的复杂性。我接触过的和能想到的实际应用就是:
<1> Servlet开发,只用你extends HttpServlet ,覆盖其中的doGet(),doPost()方法就好了。具体servlet的调用是由web服务器来完成的(服务器应用Template Method 模式隐藏了具体的数据连接、传输的过程,比如Socket连接等,这个只要稍微看看Tomcate的初始源码就可以了解了),只要你在自己实现函数中,将业务处理部分添加,然后,将实现类在web.xml中配置好就OK了,这个是一个很典型的应用;
<2> 此外就是JDBC中,jdbcTemplate开源应用中,应用的Template Method模式,就连接数据库,或者是启用数据源的应用部分封装在模板类中,而将具体的查询类接口通过DAO设计模式,暴露出来,同样,这个应用也是很典型的!
发表评论
-
25-设计模式学习总结
2012-02-06 15:42 1014在学习Thinking in patterns之前 ... -
24-Prototype
2012-02-06 14:56 891Prototype(原型模式):用原型实例指定创建 ... -
23-Interpreter
2012-02-05 14:51 928If the application user n ... -
22-Visitor
2012-02-05 11:12 872The assumption is that yo ... -
21-Memento
2012-02-03 17:57 947Use serialization to crea ... -
20-Chain of responsibility
2012-02-03 16:25 974Chain of Responsibility ... -
19-Command: choosing the operation at run-time
2012-02-01 17:45 964A Command is a function o ... -
18-Facade
2012-01-15 15:22 925Facade模式 : 为子系统中的一组接口提供一个一致的 ... -
17-Mediator
2012-01-14 19:40 856Mediator模式:用一个中介对象来封装一系列 ... -
16-Observer
2012-01-12 21:35 777好久之前看过Observer,但是,当时不是很清楚 ... -
15-Composite
2012-01-12 10:11 864Composite模式,有时又叫做部分-整体模式(Pa ... -
14-Bridge
2012-01-11 17:06 844思考了好一阵,总 ... -
13-Adapter
2012-01-10 21:38 795接下来的两个模式目的就是:Connecting differe ... -
12-Decorator:too many classes
2012-01-06 20:17 978呵,从翻译这 ... -
11-Flyweight: too many objects
2012-01-06 16:10 947The odd thing about flyweight, ... -
10-Builder
2012-01-06 09:14 829The goal of builder is to separ ... -
9-Factory method(Simple Factory method&Abstract factories)
2012-01-03 19:16 867//工厂方法的理解比较容易,重要还是如何在实践中应用。以下范例 ... -
7-Policy: generalized strategy
2012-01-01 15:58 1140Although GoF says that Policy i ... -
6-Strategy: choosing the algorithm at run-time
2011-12-29 10:40 1033Strategy : choosing the alg ... -
5-Iterators: decoupling algorithms from containers
2011-12-27 15:39 886In the process, he realized th ...
相关推荐
模板方法(Template Method)设计模式是一种行为型设计模式,它在面向对象编程中扮演着重要的角色。这个模式允许我们定义一个操作中的算法骨架,而将一些步骤延迟到子类中。这样,子类可以不改变一个算法的结构即可...
<form action="/submit" method="post"> 作者"> 留言内容"> 提交 ``` 这段模板会遍历`messages`数组并展示每个留言的作者和内容。表单部分则是用户提交新留言的地方,当用户填写完信息并点击提交按钮时,会...
在"template-method-demo"这个示例中,我们可以预见到它将展示如何在Java中应用模板方法模式。这个压缩包可能包含以下内容: 1. 一个抽象类(例如:`AbstractClass`),它定义了模板方法。在这个类中,可能会有一个...
标题“TemplateMethod.rar”暗示了这个压缩包包含的是关于Qt平台上实现模板方法设计模式的示例代码。Qt是一个跨平台的应用程序开发框架,常用于创建GUI程序,但也可用于非图形化的后台服务。 描述中的“模板方法...
在本项目"Leitura-Boleto-Template-Method"中,我们主要关注的是如何运用设计模式中的模板方法(Template Method)来处理CSV文件,尤其是读取和解析银行票据(boleto)数据。这个大学作业的目标是让学生掌握设计模式...
这个压缩包"TemplateMethod.zip"包含了关于C++实现模板方法设计模式的代码示例。 模板方法模式的核心思想是定义一个操作中的算法骨架,而将一些步骤延迟到子类中。它允许子类不改变一个算法的结构即可重定义该算法...
Java模板方法设计模式是面向对象设计中的一个关键概念,它属于行为设计模式,主要用于在抽象类中定义一个算法的框架,允许子类在不改变算法结构的情况下重定义具体步骤。这个设计模式的核心在于代码复用和封装算法的...
在这个例子中,`AbstractClass`是模板类,定义了`templateMethod`模板方法,它调用了`primitiveOperation1`、`primitiveOperation2`以及组件(Component)的`operation`方法。`ConcreteComponentA`和`...
result = cv2.matchTemplate(target_image, template, method) matches[method].append(result) ``` 3. **确定匹配区域**:为了找到最佳匹配,我们可以设置阈值,然后使用`cv2.minMaxLoc()`找出最大(或最小)值...
任何地理推断子类都必须在 method.py 文件中显式地将其子类化,并实现其两个方法: “GIMethod.train_model(...)” 使用提供的设置、数据集和 model_dir 构建地理推理模型。 实现者可以使用这些设置来更好地控制...
TemplateMethod Pattern.unitypackage是一个模板方法模式的小栗子。
Java面向对象初步练习:模版方法实战请按照指定要求完成 。在提交Pull Request之前,您可以在本地确保所有代码已经编译通过,并且通过了测试( mvn clean verify )注意!我们只允许您修改以下文件,对其他文件的...
TemplateMethod(模板方法)设计模式是一种行为设计模式,它在面向对象编程中扮演着重要的角色。这个模式允许我们在抽象类中定义一个算法的框架,同时允许子类在不改变算法结构的情况下重写算法中的特定步骤。通过...
"project-template-migration"项目就是针对这种情况设计的一个工具,它专注于帮助用户将Project Template项目从一个数据库迁移到另一个数据库。这个项目的主要目标是提供一种高效、可靠的方法来管理和转移项目模板,...
设计模式(21)-Template Method Pattern 设计模式(20)-Visitor Pattern 设计模式(19)-Observer Pattern 设计模式(18)-Command Pattern 设计模式(17)-Chain of Responsibility Pattern 设计模式(16)...
在这个例子中,`AbstractClass`定义了`templateMethod`模板方法,其中`step1()`是具体实现,而`step2()`和`step3()`作为抽象方法由`ConcreteClass1`和`ConcreteClass2`这两个具体类来实现。这样,不同的具体类可以...
代码都可以直接运行,部分设计模式有多种实现,主要的设计模式如下:...behavioral-observer,behavioral-publisher_subscriber,behavioral-template_method,behavioral-iterator等等,助力coding能力更上层楼
"Chio's Method"是一种在计算机科学中,特别是在C++编程语言...如果你想要了解更多关于Chio's Method的具体内容,可能需要查看提供的源代码文件"Chio-s-Method-with-Cpp-main",或者查找相关的文档或教程来进一步学习。
模板方法模式(Template Method Pattern)在Google Android框架中的应用是一个重要的设计模式实例,它允许开发者定义一个算法骨架,而将一些步骤延迟到子类中。这个模式的关键在于它定义了一个操作中的算法步骤,并...