java中大概有21种设计模式,先看第一种,模版方法设计模式。
从一个简单的例子引出模版方法设计模式:
用for、while、do-while三种循环分别测出1到100的和;
一般的写法是:
public class Test{
pubic static void main(String[] args){
long start = System.currentTimeMillis();
int sum = 0;
for(int i = 1; i <=100 ; i++){
sum += i;
}
System.out.println(sum);
long end = System.currentTimeMillis();
System.out.println(end-start);
long start = System.currentTimeMillis();
int sum = 0;
for(int i = 1; i <=100 ; i++){
sum += i;
}
System.out.println(sum);
long end = System.currentTimeMillis();
System.out.println(end-start);
同样do-while也是同样的循环,这样除了循环体在变,其实其余的代码都没有变,这个时候就可以用模版方法设计模式将变化的代码和不变的代码分离开了。
先看下面的代码:
import java.util.*;
abstract class Template{
private String name;
Template(String name){
this.name = name;
}
public abstract void code();
public long test(){
System.out.print(name + "测试:");
long start = System.nanoTime();
code();
long end = System.nanoTime();
return end - start;
}
}
class ForTest extends Template{
ForTest(String name){
super(name);
}
public void code(){
int sum = 0;
for(int i = 1; i <= 100; i++){
sum += i;
}
System.out.print(sum + ";用时:");
}
}
class WhileTest extends Template{
WhileTest(String name){
super(name);
}
public void code(){
int sum = 0;
int i = 1;
while(i <= 100){
sum += i;
i++;
}
System.out.print(sum + ";用时:");
}
}
class DoWhileTest extends Template{
DoWhileTest(String name){
super(name);
}
public void code(){
int sum = 0;
int i = 1;
do{
sum += i;
i++;
}while(i <= 100);
System.out.print(sum + ";用时:");
}
}
public class Test{
public static void main(String[] args){
ForTest ft = new ForTest("for循环");
WhileTest wt = new WhileTest("while循环");
DoWhileTest dwt = new DoWhileTest("do-while循环");
System.out.println(ft.test() + "纳秒");
System.out.println(wt.test() + "纳秒");
System.out.println(dwt.test() + "纳秒");
}
}
输出结果如下:
将相同的代码都放在Template类里,将要变化的代码,写在单独的子类里,去继承Template类,在Template类里,将要变化的代码抽象成一个code()方法,子类再去访问
这里只一个模版方法的一个小小的例子,后续再完善,去做一些稍复杂的事情,欢迎指教!!
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
模板方法模式是设计模式中的一种行为模式,它在软件工程中扮演着重要的角色,尤其是在C++这样的面向对象编程语言中。这种模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的...
### 设计模式之模板方法模式解析 #### 一、引言 在软件开发过程中,我们经常面临这样的场景:有一些步骤是固定的,而某些步骤则可能因具体实现而异。为了解决这类问题,设计模式中引入了一种叫做“模板方法模式”的...
**模板模式(Template Pattern)**是一种行为设计模式,它使你能在抽象类中定义操作算法的框架,而将一些步骤延迟到子类中。这样,子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 在Java、C#等面向...
设计模式是解决特定问题的一种标准方法,它不仅仅是一种代码技巧或模板,更是一种思考问题的方式。在面向对象编程中,设计模式提供了可复用的设计方案,帮助开发者减少重复工作,提高代码质量和维护性。此外,重构...
模板方法模式是一种设计模式,属于行为设计模式,它在面向对象设计中扮演着重要的角色。这个模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法...
设计模式应用,自己练手用的设计模式应用,总的而言是个简单的demo而已,练手练手
模板方法模式是一种行为设计模式,它在面向对象编程中扮演着重要的角色。这种模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。这样使得子类可以在不改变算法结构的情况下,重新定义该算法的某些特定步骤...
在软件设计模式的世界里,工厂模式和模板方法模式是两种常用的设计模式,它们都有各自的优点和应用场景。这两种模式都是面向对象设计原则的体现,能够帮助我们编写出更加灵活、可扩展的代码。让我们来深入探讨一下这...
模板方法模式是一种行为设计模式,它定义了一个操作中的算法的骨架,将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些特定步骤。 ### 模板方法模式的关键角色 1. **...
在Java设计模式之模板模式中,我们将深入探讨这种模式的原理、应用场景以及如何在实际编码中实现。 模板模式的核心在于抽象类,这个抽象类定义了一个操作中的算法骨架,而将一些具体步骤的实现延迟到其子类中。这样...
模板方法模式是面向对象设计模式的一种,它在行为模式中占据重要地位。此模式的核心思想是定义一个操作的框架,允许子类在这个框架内自定义具体的行为。这为代码复用和实现相同逻辑的不同实现提供了方便,同时也遵循...
模板方法模式是一种设计模式,属于行为设计模式,它在面向对象编程中扮演着重要的角色。这个模式的主要目的是定义一个操作的框架,也就是算法的主干,同时允许子类在不改变算法整体结构的情况下,对其中特定步骤进行...
综上所述,MVC模式和模板模式都是在软件开发中广泛应用的设计模式,它们各自解决了特定的设计问题。MVC模式通过分离关注点提高了应用程序的灵活性和可维护性,而模板模式则通过封装变化点来增强代码的复用性。在实际...
在Java编程中,设计模式的应用极大地提高了代码的可读性、可维护性和可复用性。下面是对设计模式的详细解释。 设计模式分为三类:创建型模式、结构型模式和行为型模式。创建型模式关注对象的创建过程,如单例模式...
在这个名为"ASP.NET 23种设计模式简单实例代码"的压缩包中,你将找到23种经典设计模式在.NET环境下的具体实现,这对于学习和理解设计模式非常有帮助。 1. 工厂模式:工厂模式是一种创建型设计模式,它提供了一种...
书籍作者分享了个人学习设计模式的心路历程,强调了从简单的面向对象编程到深入理解设计模式,再到真正领悟面向对象设计精髓的过程。作者曾自认为在面向对象分析与设计方面有相当的造诣,拥有多个行业的设计与实现...
通过运行和分析这个Demo程序,你可以深入理解简单工厂和工厂方法在实际应用中的差异,以及如何根据需求选择合适的设计模式。同时,也可以学习到如何在C++环境中有效地实现这两种模式,提升你的编程技能和设计思维。...
设计模式的应用带来多方面的好处,如代码重用、增强沟通效率、简化文档编写、易于重构、支持变化、节省开发时间。使用设计模式需结合实际项目情况,避免盲目应用,确保模式与业务需求匹配。 设计模式分为三大类:...
模板方法模式是面向对象设计模式的一种,它在PHP中被广泛应用以实现代码的复用和扩展。这种模式的核心思想是定义一个操作中的算法框架,同时允许子类在不改变算法整体结构的情况下重定义某些特定步骤。 在模板方法...
或者在不适合的地方使用设计模式,比如在简单的场景下应用复杂的模式,反而增加复杂性。因此,理解设计模式背后的意图和适用场景至关重要。 作者通过大量的Java实例,不仅展示了如何正确地应用设计模式,还可能涵盖...