模板模式详解:模板模式的应用场景及Java对模板方法的使用

作者&投稿:辕律 (若有异议请与网页底部的电邮联系)
~ 1.什么是模板模式

模板模式是在一个抽象类中定义了执行它的方法的方式(模板方法),由抽象类的子类根据具体的业务需求去重写父类的中方法,但执行时将调用抽象类中定义的方式进行。

在模板模式中,一个抽象的公开定义了执行它的方法的方式(模板)。它的子类可以重写方法实现,但调用将以抽象类中定义的方法进行。这种类型的设计模式属于行为型模式

2.模板模式的优点/缺点和使用场景2.1模板模式的优点

通过把子类中不变的部分抽离到子类中,从而达到去除子类方法的重复代码便于维护

扩展可变部分,子类实现模板父类的某些细节,有助于模板父类的扩展

通过一个父类调用子类实现的操作,通过子类扩展增加新的行为(行为由父类控制,子类实现符合开闭原则)

2.2模板模式的缺点

按照设计习惯,抽象类负责声明最抽象、最一般的事物属性和方法,实现类负责完成具体的事务属性和方法,但是模板方式正好相反,子类执行的结果影响了父类的结果,会增加代码阅读的难度

每个不同的实现都需要一个子类去实现,导致类的个数不断增加,使得系统更为庞大

2.3模板模式的使用场景

多个子类有共同的方法,且逻辑基本相同

可以把核心的算法和重要的功能设计为模板方法,子类去实现相关细节功能

系统在进行重构或者是功能优化的时候可以将子类重复的代码抽离到父类中

3.模板模式实现3.1首先创建一个Phone抽象类packagecom.zhangsan.shard.pojo;/***@ClassNamePhone*@DescriptionTODO*@AuthorZhangSan_Plus*@Date2021/9/919:43*@Version1.0**/publicabstractclassPhone{abstractvoidopenPhone();abstractvoidendPhone();abstractvoidupVolume();abstractvoiddownVolume();publicfinalvoidusePhone(){//开机openPhone();//调高音量upVolume();//调低音量downVolume();}publicfinalvoidend(){//关闭手机endPhone();}}3.2创建一个小米手机子类packagecom.zhangsan.shard.pojo;/***@ClassNameXiaoMi*@DescriptionTODO*@AuthorZhangSan_Plus*@Date2021/9/919:47*@Version1.0**/publicclassXiaoMiextendsPhone{@OverridevoidopenPhone(){System.out.println("小米手机已开机");}@OverridevoidendPhone(){System.out.println("小米手机已关机");}@OverridevoidupVolume(){System.out.println("小米手机音量+1");}@OverridevoiddownVolume(){System.out.println("小米手机音量-1");}}3.3创建一个苹果手机子类packagecom.zhangsan.shard.pojo;/***@ClassNameApple*@DescriptionTODO*@AuthorZhangSan_Plus*@Date2021/9/919:50*@Version1.0**/publicclassAppleextendsPhone{@OverridevoidopenPhone(){System.out.println("苹果手机已开机");}@OverridevoidendPhone(){System.out.println("苹果手机已关机");}@OverridevoidupVolume(){System.out.println("苹果手机音量+1");}@OverridevoiddownVolume(){System.out.println("苹果手机音量-1");}}3.4创建一个用户来使用手机packagecom.zhangsan.shard.pojo;/***@ClassNameTemplateDemo*@DescriptionTODO*@AuthorZhangSan_Plus*@Date2021/9/919:51*@Version1.0**/publicclassTemplateDemo{publicstaticvoidmain(String[]args){PhonexiaoMi=newXiaoMi();xiaoMi.usePhone();xiaoMi.endPhone();Phoneapple=newApple();apple.usePhone();apple.endPhone();}}

4.模板方法在Java中的引用4.1AbstractList类publicabstractEget(intvar1);4.1.1ArrayList对get()方法的实现publicEget(intindex){rangeCheck(index);returnelementData(index);}4.1.2SubList对get()方法的实现publicEget(intindex){rangeCheck(index);checkForComodification();returnl.get(index+offset);}4.2AbstractMap类publicabstractSet<Entry<K,V>>entrySet();4.2.1ConcurrentHashMap对entrySet()的实现publicSet<Map.Entry<K,V>>entrySet(){EntrySetView<K,V>es;return(es=entrySet)!=null?es:(entrySet=newEntrySetView<K,V>(this));}4.2.2TreeMap对entrySet()的实现publicSet<Map.Entry<K,V>>entrySet(){EntrySetes=entrySet;return(es!=null)?es:(entrySet=newEntrySet());}

作者:ZhangSan_Plus




模板模式详解:模板模式的应用场景及Java对模板方法的使用
3.模板模式实现3.1首先创建一个Phone抽象类packagecom.zhangsan.shard.pojo;\/***@ClassNamePhone*@DescriptionTODO*@AuthorZhangSan_Plus*@Date2021\/9\/919:43*@Version1.0**\/publicabstractclassPhone{abstractvoidopenPhone();abstractvoidendPhone();abstractvoidupVolume();abstractvoiddownVolume();public...

秒懂设计模式之模板方法模式(Template Method Pattern)
在具体实现中,首先定义一个模板类,包含模板方法和一系列抽象方法,以及一个默认实现的方法作为钩子。模板方法为算法的骨架,而抽象方法则由子类具体实现,钩子方法允许子类根据需要进行个性化实现。通过这种方式,王二狗不仅实现了不同SDK的无缝接入,还提高了代码的可维护性和可扩展性。然而,模板方法模式也...

软件设计模式之模板模式的好处是什么?
模板方法模式(Template Method Pattern),定义一个操作中的算法骨架,而将一些实现步骤延迟到子类当中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法模式是比较简单的一种设计模式,但是它却是代码复用的一项基本的技术,在类库中尤其重要,它遵循“抽象类应当拥有尽可...

设计模式学习笔记(二十五):模板方法模式
以银行业务利息计算为例,抽象类首先验证用户信息,然后通过canCalculate方法判断是否能进行计算,调用calculate方法执行计算,最后显示结果。具体子类根据用户状态,可能重写canCalculate方法以判断是否计算,或覆盖calculate和display方法以实现不同的计算和提示。模板方法模式的优势在于它提供了一种结构化的框架,使...

模版和模板的区别
模版与模板的区别如下:模版通常指的是一种预设的样式或格式,它提供了一个基本的框架或布局,用户可以在这个基础上进行个性化的修改和填充内容。模版通常用于设计、排版、编程等领域,例如网页模版、文档模版、代码模版等。模版的重点在于提供一个可重复使用的框架,以简化设计或编码过程。而模板则更多地强调...

什么是模板方法模式?
模板方法模式是一种行为设计模式,为算法的骨架定义,让子类填充细节,而无需改变骨架结构。这种方法实现算法部分步骤的延迟,利于子类在不改变整体算法情况下进行定制。优点包括代码重用与灵活性,缺点为过度抽象可能导致代码难以理解。在C++中,通过创建模板类beverage.h并定义抽象方法,具体子类如咖啡coffee.h...

spring框架中用到了哪些设计模式?
spring中在实例化对象的时候用到Strategy模式 在SimpleInstantiationStrategy中有如下代码说明了策略模式的使用情况: 第九种:模板方法(TemplateMethod) 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 TemplateMethod模式一般是需要继承...

软件设计模式有哪些?
? 状态模式(State Pattern) ? 策略模式(Strategy Pattern) ? 模板方法模式(Template Method Pattern) ? 访问者模式(Visitor Pattern) 问题二:软件开发的设计模式有哪些 最常用的是设计模式是工厂模式或者单例模式。 问题三:什么是软件设计模式 你好。 软件设计模式就是Uml统一建模语言的技巧性概念。主要研究...

建筑工程模板分类以及特点?
建筑工程模板可以根据材料、结构和用途等方面进行分类。以下是一些常见的建筑工程模板分类及其特点:1. 木质模板:- 特点:木质模板是最常见和传统的模板类型。它们由木材制成,具有良好的可塑性和可加工性。木质模板适用于各种形状和尺寸的结构,易于加工和定制。- 优点:成本相对较低,可重复使用,质量轻...

设计模式都有哪些?
一、创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 二、结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 三、行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模...

晋州市13840596262: java设计模式一般应用在什么场景当中? -
幸丹托吡: Java中的23种设计模式: Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式), Adapter(适配器模式), Bridge(桥梁模式), ...

晋州市13840596262: 请列举一些您用到过的设计模式以及在什么情况下使用该模式? -
幸丹托吡: 1.原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 使用场景:一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者...

晋州市13840596262: 策略模式的应用场景 -
幸丹托吡: 应用场景: 1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为. 2、 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现. 3、 对客户隐藏具体策略(算法)的实现细节,彼此完全独立.

晋州市13840596262: java中常用的设计模式有哪些? -
幸丹托吡: 1.单例模式(有的书上说叫单态模式其实都一样) 该模式主要目的是使内存中保持1个对象 2.工厂模式 该模式主要功能是统一提供实例对象的引用.看下面的例子: public class Factory{ public ClassesDao getClassesDao(){ ClassesDao cd = ...

晋州市13840596262: HTML5页面的作用及应用场景有哪些 -
幸丹托吡: HTML5页面的作用 1、令企业发展更开阔:HTML5页面作为新兴的微信推广工具,可以应用各种各样的场景,比如产品展示、购买流程,购物车等,能让客户有更快的速度体验,不再卡顿. 2、令体验更完美:HTML5页面中的各种炫酷创新的场...

晋州市13840596262: java中常用到得设计模式有哪几种? -
幸丹托吡: 一共23种设计模式!按照目的来分,设计模式可以分为创建型模式、结构型模式和行为型模式.创建型模式用来处理对象的创建过程;结构型模式用来处理类或者对象的组合;行为型模式用来对类或对象怎样交互和怎样分配职责进行描述.创建...

晋州市13840596262: Android 开发中常用到的设计模式有哪些 -
幸丹托吡: 2. 软件设计模式的分类2.1. 创建型 创建对象时,不再由我们直接实例化对象;而是根据特定场景,由程序来确定创建对象的方式,从而保证更大的性能、更好的架构优势.创建型模式主要有简单工厂模式(并不是23种设计模式之一)、工厂方...

晋州市13840596262: 列举出你常用的设计模式及场景(JAVA) -
幸丹托吡: DAO模式.MVC模式 还有23种常用设计模式

晋州市13840596262: AE模板的使用 -
幸丹托吡: 一般模板都是分场景的,也就是一段一段的,你可以选其中的一段,在项目窗口复制后把它放到时间线最后或者你想放的地方,注意复制时,合成里面的子合成,子子合成全部要复制,在新复制合成里用新复制出来的子合成分别替换原来的子合成,不然的话,还跟原来一样.如果新复制的合成包含视频多,自己切掉前部或者后部就可以了,同时也要注意前后衔接顺畅

晋州市13840596262: 电脑的windows高级选项菜单里那些8样模式怎么使用 -
幸丹托吡: 一、安全模式 系统问题举例:最近我给Windows XP打上了SP2补丁(非正式版本),可是之后在安装瑞星杀毒软件的过程中出现了蓝屏现象,而且每次在出现Windows登录窗口时都会自动重启,这是怎么回事?该如何解决呢? 专家支招:这是...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网