各位大神,Java的模板模式和单纯的继承有什么不同?好处在哪里?

问题描述

各位大神,Java的模板模式和单纯的继承有什么不同?好处在哪里?

各位大神,Java的模板模式和单纯的继承有什么不同?好处在哪里?

解决方案

模板模式是指定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。
模板模式的优点
模板方法模式通过把不变的行为搬移到超类,去除了子类中的重复代码。
子类实现算法的某些细节,有助于算法的扩展。
通过一个父类调用子类实现的操作,通过子类扩展增加新的行为,符合“开放-封闭原则”。
缺点
每个不同的实现都需要定义一个子类,这会导致类的个数的增加,设计更加抽象。

解决方案二:

语言提供的继承是你能实现模板设计模式的前提。模板模式依赖继承这种语言特性。

解决方案三:

这个没法比,几乎所有的设计模式都用到继承,包括策略模式、命令模式等等,都实现了类似的需求,但是各有各的场景。

解决方案四:

你可以拿模板和策略去比。你实在没法拿模板和“继承”去比。好比你可以拿手机和对讲机去比,但是没法拿手机和塑料去比,或者拿手机和芯片去比。

解决方案五:

其实还是继承。只是有一些设计上的理念在里面。

http://www.2cto.com/kf/201205/131108.html

解决方案六:

http://www.cnblogs.com/java-my-life/archive/2012/05/14/2495235.html

解决方案七:

一个是设计模式,一个是语言特性,所有的设计模式都是依赖于语言特性,之所以有设计模式,是为了更好的利用语言特性

解决方案八:

继承是语言的特性,设计模式是一种固定的使用方式,个人觉得两者之间的优势比较难说,只能从两者的特点去说。

时间: 2024-10-31 18:41:09

各位大神,Java的模板模式和单纯的继承有什么不同?好处在哪里?的相关文章

classloader-请教大神Java类加载与对象访问的问题

问题描述 请教大神Java类加载与对象访问的问题 当前线程的classloader为classloaderA的一个对象,然后加载了class B,然后我修改了Class B,给B添加了一个新的方法get,我要怎么样才能在不重启JVM的情况下访问到get方法呢?我之前试过把当前线程的classloader换成新的classloaderA对象,但是无法访问到B对象的新方法. 解决方案 JAVA类加载,对象Java类加载与对象调用java之类对象的加载 解决方案二: 类加载器只有在类加载时会起到指示安

javaweb-求大神~ java.lang.IllegalStateException异常代码如下

问题描述 求大神~ java.lang.IllegalStateException异常代码如下 java.lang.IllegalStateException at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435) at cn.cms.filter.LoginFilter.doFilter(LoginFilter.java:55) at org.apache.catalina.co

请教大神java中排序的问题

问题描述 请教大神java中排序的问题 网上找排序的资料,有的说第一个是冒泡,有的说第二个,个人感觉第二个,但是不确定,求大神教我, public static void mySort1(int[] data){ for (int i = 0; i < data.length; i++) { for (int j = i; j < data.length; j++) { if(data[i] < data[j]) { int tmp = data[i]; data[i] = data[j

java-各位大神 Java 图片的和校验怎么算???

问题描述 各位大神 Java 图片的和校验怎么算??? 各位大神,图片的和校验怎么算啊啊啊啊??????????? 解决方案 没明白你的图片和检验是什么意思?是图片验证码吗?

跪求大神-java中static定义变量

问题描述 java中static定义变量 运行结果为什么是0不是1? 解决方案 因为你定义了参数x 根据就近原则,你的x++访问的是这个参数x变量,而不是成员变量x 解决方案二: 因为你的参数名也叫x,x++ 这里是将参数x自增,不是全局变量x. 所以全局变量x里面的值还是0. 解决方案三: class Test { public static int x = 9; public static void name(int x) { x ++; System.out.println(x); //为

酷派大神f1手机 art模式开启方法介绍

1)我们只要在手机中找到[设置]点击[开发者选项],然后我们找到[选择运行环境]细节如下图所示.     2)然后我们找到[使用ART]之后我们再点击[确定]即可.(如下图)   好了到了这里这个art模式开启就打开了,大家快去试一下吧.

可怜的程序媛想情请教诸位大神java iText导出PDF问题

问题描述 小女子第一次发帖,第一次捯饬iText,客户想要以PDF导出报表,因为最下面是签名的地方,我做了一个PDFPTable来放签名,现在想请教下,我想使这个table始终处在页面的最下方,不管分不分页 解决方案 解决方案二:参考:,通过页脚来设置是不是可以?或者参考:在最后一页页脚设置PdfPTablefootertable=helper.getFooterPTable(path);if(!writer.fitsPage(footertable)){document.newPage();}

cas-Cas 代理模式是不是一定要走https协议?求大神解答

问题描述 Cas 代理模式是不是一定要走https协议?求大神解答 cas代理模式回调无法获取pgtId 和pgtIou 请问代理模式,cas认证服务与cas代理端是不是都要采用https,才能通过? 求大神解答,谢谢. 解决方案 协议的代理模式---------------------- 解决方案二: http://www.coin163.com/java/docs/201309/d_2845038902.html

java中空字符串可以用indexOf么?如果用了是不是会报错?请教大神

问题描述 java中空字符串可以用indexOf么?如果用了是不是会报错?请教大神 java中空字符串可以用indexOf么?如果用了是不是会报错?请教大神 解决方案 可以啊,只要是非null的字符串类型的变量都可以调用string类的这个方法的. 解决方案二: public class NullStringTest { public static void main(String[] args) { String s1 = null; //空指针异常 // System.out.println