java设计模式之模板模式
abstract class SortTemplate {public void showSortResult(int[] arr) {sort(arr);for(int x:arr) {System.out.print( x + " / ");}System.out.println();}public abstract void sort(int[] arr);
}class BubbleSort extends SortTemplate {public void sort(int[] arr) {System.out.println("冒泡排序:");for(int i=0;i<arr.length-1;i++){for(int j=0;j<arr.length-1-i;j++){if(arr[j]>arr[j+1]){int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}}
}class SelectSort extends SortTemplate{public void sort(int[] arr){System.out.println("选择排序:");for(int i=0;i<arr.length-1;i++){for(int j=i+1;j<arr.length;j++){if(arr[i]>arr[j]){int temp=arr[i];arr[i]=arr[j];arr[j]=temp;}}}}
}class QuickSort extends SortTemplate{public void sort(int[] arr){System.out.println("快速排序:");quickSort(arr,0,arr.length-1);}public void quickSort(int[] arr,int left,int right){if(left<right){int i=left,j=right,x=arr[left];while(i<j){while(i<j&&arr[j]>=x)j--;if(i<j){arr[i++]=arr[j];}while(i<j&&arr[i]<x)i++;if(i<j){arr[j--]=arr[i];}}arr[i]=x;quickSort(arr,left,i-1);quickSort(arr,i+1,right);}}
}class TemplateDemo{public static void main(String[] args) {int[] arr1 = {44,44,2,32,54,22,88,77,99,11};int[] arr2 = {34,32,6,12,98,34,81,30,1,45};int[] arr3 = {73,5,19,40,99,20,12,48,28,64,308,23};SortTemplate st = new BubbleSort();st.showSortResult(arr1);st = new SelectSort();st.showSortResult(arr2);st = new QuickSort();st.showSortResult(arr3);}
}
运行结果:
2 / 11 / 22 / 32 / 44 / 44 / 54 / 77 / 88 / 99 /
选择排序:
1 / 6 / 12 / 30 / 32 / 34 / 34 / 45 / 81 / 98 /
快速排序:
5 / 12 / 19 / 20 / 23 / 28 / 40 / 48 / 64 / 73 / 99 / 308 /
java设计模式之模板模式相关推荐
- 二、java设计模式之模板模式深进浅出
一.背景 模板模式具体怎么使用,下面我会详细讲,如果有那个地方讲的不到位了,请大家多多指教,共同学习,我尽量以白话的形式进行展示,废话不多说了,下面开始. 二.spring中的使用 springJDB ...
- Java设计模式之模板模式【通过LOL选英雄案例】
初衷 设计模式(Design Pattern)引用百度百科中的一句话,就是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结.实际上在我们的实际编码中到处都有设计模式的影子,比如最常用的单例 ...
- 23种java设计模式之模板模式
说实话,我们学的框架其实就是模板,是不是这样引出话题就能很快理解模板模式呢,好了,下面我们用一个经典的泡咖啡,泡茶案例来说明模板模式. 泡咖啡步骤:水烧开--->冲泡咖啡粉--->把咖啡倒 ...
- java设计模式-16模板模式
定义 在一个抽象类公开定义了执行它的方法的模板.它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行 模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变 ...
- Java设计模式之策略模式+工厂模式+模板模式
Java设计模式之策略模式+工厂模式+模板模式 1.策略模式+工厂模式+模板模式 个人的理解:实际开发工程中,一些业务很复杂的逻辑使用很多的 if 或者 if···else 语句,不利于维护和扩展,为 ...
- Java设计模式分为创建模式, 结构模式, 行为模式 3种类型
Java设计模式之创建模式包括: Factory, 工厂模式 Singleton, 单例模式 Builder, 建造模式 Prototype, 原型模式 Java设计模式之结构模 ...
- Java设计模式之模板方法模式(UML类图分析+代码详解)
大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...
- java备忘录模式应用场景_图解Java设计模式之备忘录模式
图解Java设计模式之备忘录模式 游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态. ...
- Java设计模式之策略模式与状态模式
一.策略模式定义 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们之间可以相互替换,策略模式可以在不影响客户端的情况下发生变化. 好了,定义看看就完了,我知道你很烦看定义. 二.策 ...
最新文章
- Mybatis自定义排序
- top99 slam
- consul的安装搭建
- 添加notepad到右键菜单栏
- 元组中[-1]的作用
- linux read函数_浅谈Linux内核IO体系之磁盘IO
- centos终止linux程序,CentOS启动和停止服务详解
- Python3 多线程(连接池)操作MySQL插入数据
- linux系统使用国内清华镜像下载安装Anaconda3
- odi 12.2.1.1新特性
- CodeForces 650A Watchmen
- MySQL的InnoDB存储引擎
- 3dmm人脸配准/重建:gold standard algorithm
- linux firefox 解雇ie,Fire IE
- nodejs实现单点登录系统
- 机器翻译模型简介(一)
- C语言超级搞笑的代码,冷笑话我们程序员也会讲的啊!
- 算法的时间复杂度排序
- 路由追踪traceroute分析
- 数学与计算机学院校友会,福州大学数学与计算机科学学院厦门校友会成立
热门文章
- 将chart放入panel中出现滚动条_聊天场景在web前端开发中的体验与优化
- nginx 根证书 服务器证书,Nginx双向证书校验(服务器验证客户端证书)
- table每行自动触发ajax,table.ajax.reload()成功后未触发:function()
- esmini接入外部ego车控制
- You must install 'msgfmt' on your build machine
- jni c call java_Java通过-jni调用c语言
- tdk怎么设置_你真的做好网站的标题、描述、关键词(TDK)设置了吗?
- mysql not is null_转!!mysql 字段 is not null 和 字段 !=null
- python处理ncdc气象数据并利用arcgis可视化
- 第六节:反射(几种写法、好处和弊端、利用反射实现IOC)