2024年Java最全java笔记--设计模式之模版方法模式,netty框架面试题

最后

小编利用空余时间整理了一份《MySQL性能调优手册》,初衷也很简单,就是希望能够帮助到大家,减轻大家的负担和节省时间。

关于这个,给大家看一份学习大纲(PDF)文件,每一个分支里面会有详细的介绍。

image

这里都是以图片形式展示介绍,如要下载原文件以及更多的性能调优笔记(MySQL+Tomcat+JVM)!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

模版方法模式

定义:一个模版方法用一些抽象的操作定义一个算法,而子类将重新定义这些操作以提供具体行为。

意图:定义了在一个操作中的一个算法框架,把一些步骤推迟到子类中去实现。模版方法模式让子类不需要改变算法结构 而重新定义特定的算法步骤。

通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类中提供一个称之为模板方法的方法来定义这些基本方法的执行次序,而通过其子类来覆盖父类的某些步骤,从而使得相同的算法框架可以有不同的执行结果。

模板方法模式提供了一个模板方法来定义算法框架,而某些具体步骤的实现可以在其子类中完成。

模板方法模式中的角色:

**(1) AbstractClass(抽象类):**在抽象类中定义了一系列基本操作,这些基本操作可以是具体的,也可以是抽象的,每一个基本操作对应算法的一个步骤,在其子类中可以重定义或实现这些步骤。同时,在抽象类中实现了一个模板方法,用于定义一个算法的框架,模板方法不仅可以调用在抽象类中实现的基本方法,也可以调用在抽象类的子类中实现的基本方法,还可以调用其他对象中的方法。

**(2) ConcreteClass(具体子类):**它是抽象类的子类,用于实现在父类中声明的抽象基本操作以完成子类特定算法的步骤,也可以覆盖在父类中已经实现的具体基本操作。

具体实现代码如下:

抽象类角色


public abstract class ModeMethod {

	/**

	 * 模版方法:请客

	 */

	public void treat() {

		order();// 点菜

		eatSomething();// 吃东西

		payMoney();// 结账

	}



	private void order() {

		System.out.println("今天我请客,我来点菜了啊");

		System.out.println("打开菜单,书写菜名");

		System.out.println("点餐完毕");

	}



	abstract void eatSomething();



	private void payMoney() {

		System.out.println("吃好了,我来付款了啊");

		System.out.println("结账走人");

	}

}



具体子类角色

子类1


public class Guest1 extends ModeMethod{



	@Override

	void eatSomething() {

		System.out.println("请客人1吃的 黄焖鸡");

		

	}

}

子类2


public class Guest2 extends ModeMethod{

   



	@Override

	void eatSomething() {

		System.out.println("请客人2吃的 冬笋老鸭汤,红烧带鱼,玉米排骨,干锅牛蛙....");

		

	}

}

测试类


public class MainTest {



	public static void main(String[] args) {

		ModeMethod guest1 = new Guest1();//向上转型



# 惊喜

最后还准备了一套上面资料对应的面试题(有答案哦)和面试时的高频面试算法题(如果面试准备时间不够,那么集中把这些算法题做完即可,命中率高达85%+)

![image.png](https://img-blog.csdnimg.cn/img_convert/b5f589b6fe762002887d2c6ce26d7ab4.webp?x-oss-process=image/format,png)


![image.png](https://img-blog.csdnimg.cn/img_convert/8eb23831a78a0f8192b2e342ab58f0ea.webp?x-oss-process=image/format,png)

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**

**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618154847)**

862162964)]

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**

**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618154847)**

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值