首页 > 其他分享 >模板设计模式

模板设计模式

时间:2023-08-14 16:22:34浏览次数:46  
标签:void System protected println 设计模式 模板 out

一.意图

模板方法模式 (Template Method) 是一种行为设计模式, 它在超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。

模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。,没有关联关系。 因此,在模板方法模式的类结构图中,只有继承关系。

二.场景

当使用多个类的功能,大部分功能都相同时,可以使用模板方法

三.优缺点

优点: 1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。 3、行为由父类控制,子类实现。

缺点:每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。

四.代码实现

public class TemplateMethodPattern {
    public static void main(String[] args) {
        CookingFood cookingFood = new CookingFood();
        cookingFood.cook();
    }

}

//模板
abstract class Cooking{
    protected abstract void step1();
    protected abstract void step2();

    public void cook(){
        System.out.println("做饭开始");
        step1();
        step2();
        System.out.println("做饭结束");
    }
}

//具体实现类 class CookingFood extends Cooking { @Override protected void step1(){ System.out.println("放鸡蛋和西红柿"); } @Override protected void step2() { System.out.println("少少许盐和味精"); } }

 

标签:void,System,protected,println,设计模式,模板,out
From: https://www.cnblogs.com/developS/p/17629018.html

相关文章

  • VTK 实例8:command与observe设计模式(当交互使相机变化时打印出当前相机的坐标,当发生拾
    1#include"vtkAutoInit.h"2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkInteractionStyle);4#include<vtkConeSource.h>5#include<vtkPolyDataMapper.h>6#include<vtkRenderer.h>7#include<vtkRende......
  • SAP Fiori Elements 应用里标准模板 XML Fragment 加载的逻辑和 XMLPreprocessor 的作
    触发时间点是XMLPreprocessor的insertFragment方法:上图的调试器上下文里,我们看到了XMLPreprocessor.js的实现,它是SAPUI5框架中一个重要的文件,它主要负责处理XML视图的预处理工作。对于SAPUI5中的视图创建,可以使用JavaScript、JSON、XML等多种方式。其中,XML......
  • 10个微服务设计模式
    微服务设计模式是一种指导微服务架构设计和开发的一系列原则和实践。微服务设计模式的目的是为了解决微服务架构中遇到的一些常见的问题和挑战,比如服务划分、服务通信、服务治理、服务测试等。微服务设计模式可以帮助我们构建出高效、可靠、可扩展、可维护的微服务系统。本文将......
  • .net 常用几个设计模式
    .NETCore框架支持许多设计模式,以下是一些常见的设计模式:一、抽象工厂模式(AbstractFactoryPattern):提供一种将一组相关或相互依赖的对象创建起来的方式,而无需指定其具体类。抽象工厂模式是一种创建型设计模式,它提供了一个接口来创建一系列与特定类无关的对象,而无需指定这些对象......
  • 怎么解释ABP 的DDD 设计模式
    ABP的DDD设计模式,就是将传统的开发模式,根据领域驱动设计(DomainDrivenDesign,简称DDD)的理念,调整为一个理念更清晰,结构更合理的新的开发模式。ABP框架对DDD的概念进行了实际的运用,有助于提高开发效率,降低系统复杂性,方便系统的维护和扩展。领域驱动设计主要围绕以下几个重要的概念......
  • 单调队列模板
    好的,这是一个晴朗的夜晚。-苯荏水平不高甚至菜亖,博客仅仅写给自己避免自己忘记学了什么,也仅据我理解写出,不严谨,非常不严谨。单调队列。在原序列基础上,维护一个单调的序列。单调队列中的元素在原序列中的相对位置不变,且在单调队列中的元素是单调的。基本模板题:https://www.lu......
  • java8 时间模板中 year 和 year-of-era 的不同
    Java8在表示时间的时候引入了一个u激发了我的好奇心,下面给大家讲解下两个的不同:year字段表示公历年份,其值可以是正数或负数,从-999,999,999到999,999,999。year-of-era字段表示日历纪元内的年份,其值范围从1到正无穷大。两者的区别在于:year字段直接表示公历年份,不受纪元......
  • tarjan模板
    ilvoidtarjan(intu){ dfn[u]=low[u]=++num,st[++top]=u,ins[u]=1; G(i,u) { intv=ver[i]; if(!dfn[v]) { tarjan(v); low[u]=min(low[u],low[v]); } elseif(ins[v])low[u]=min(low[u],dfn[v]); } if(dfn[u]==low[u]) { intt=0; cnt++; do......
  • 12 享元模式 -- go语言设计模式
    享元模式(FlyweightPattern)是一种结构型设计模式,用于有效地支持大量细粒度对象的共享。享元模式通过共享对象的方式来减少内存使用和提高性能。享元模式的实现代码packagemainimport("fmt""sync")/*业务场景描述:-租车场景,客户像车行租车,如果车行有车直接租......
  • 最大流模板
    需要注意的是要ll就全ll,不然要出事。structFlow{lltot=1,hd[N],ne[M],to[M],lim[M];voidAdd(intx,inty,llz){ne[++tot]=hd[x];hd[x]=tot;to[tot]=y;lim[tot]=z;ne[++tot]=hd[y];hd[y]=tot;to[tot]=x;lim[tot]=0;}llT,dis[......