java 框架 例子_如何设计Java框架? –一个简单的例子

通过优锐课核心java学习笔记中,我们可以看到,码了很多专业的相关知识, 分享给大家参考学习。

你可能对框架如何工作感到好奇? 这里将通过一个简单的框架示例来说明框架的思想。

框架目标

首先,为什么我们需要一个除普通库以外的框架? 框架的目标是定义一个过程,使开发人员可以根据个人需求实现某些功能。 换句话说,框架定义了框架,开发人员在使用框架时填充了框架。

最简单的框架

在下面的示例中,前3个类被定义为框架的一部分,第4个类是框架的客户端代码。

Main.java是框架的入口点。 这是无法更改的。

//imagine this is the entry point for a framework, it can not be changedpublic class Main {

public static void main(String[] args) {

Human h = new Human(new Walk());

h.doMove();

}}//imagine this is the entry point for a framework, it can not be changedpublic class Main {

public static void main(String[] args) {

Human h = new Human(new Walk());

h.doMove();

}}

Move.java是挂钩。 挂钩是开发人员可以根据自己的需求定义/扩展功能的地方。

public abstract class Move {

public abstract void action();}

Human.java是模板,它反映了框架的工作原理。

public class Human {

private Move move;

public Human(Move m){

this.move = m;

}

public void doMove(){

this.move.action();

}}

这个简单的框架允许并要求开发人员扩展“ Move”类。 实际上,在这个简单的框架中,action()方法是开发人员唯一能够更改的东西。

在实现内部,可以将不同的“动作”编程为不同的目的。 例如。 下面的示例显示“每小时5英里”,你当然可以将其重新定义为“每小时50英里”。

public class Walk extends Move {

@Override

public void action() {

// TODO Auto-generated method stub

System.out.println("5 miles per hour - it is slow!");

}}

结论

此处的示例仅显示了一个简单的Template and Hook的工作方式。 真正的框架要比这复杂得多。 它不仅包含模板-模板关系之类的其他关系,而且还包含有关如何有效提高性能和编程可用性的非常复杂的过程。

> 喜欢这篇文章的可以点个赞,欢迎大家留言评论,记得关注我,每天持续更新技术干货、职场趣事、海量面试资料等等

> 如果你对java技术很感兴趣也可以交流学习,共同学习进步。

> 不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代

文章写道这里,欢迎完善交流。最后奉上近期整理出来的一套完整的java架构思维导图,分享给大家对照知识点参考学习。有更多JVM、Mysql、Tomcat、Spring Boot、Spring Cloud、Zookeeper、Kafka、RabbitMQ、RockerMQ、Redis、ELK、Git等Java干货

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jboss eap_HawtIO在JBoss EAP上(第二部分)

jboss eap我刚刚发布了一篇关于在JBoss Wildfly 8.1上运行HawtIO的条目 。 从那篇文章中,您将了解HawtIO的出色表现 ,以及它必须具备的所有 出色 插件,才能从单个仪表板管理基于JVM的技术……好吧…… hawt ……。 但是,出于上一…

alter id order by_声卡id查找表

强烈建议收藏这个表格真的很方便,强烈建议大家收藏,尤其是那些喜欢折腾的人!因为有时候会特别需要它声卡ID表芯片型号仿冒ID创作的CA01320x100918仿冒ID值 0,1,2,3,4,5,6,9,10,11,12Cirrus Logic公司CS42100x100101仿冒ID值 13Cirrus Logic公…

java bean id_在 JSP中使用JavaBean的标签是 ,其中 id的用途是 __________________学小易找答案...

【多选题】Flash渐变动画分为()。P22【单选题】关于 JavaBean,下列的叙述哪一项是不正确的?( )【填空题】用户在实际 Web应用开发中,编写Bean除了要使用 ___________________ 引入 Java的标准类。【单选题】Its very foolish _____ it.【填空题】在 Web服务器端使用JavaBean,将…

JDK 14:CMS GC是OBE

JDK 14 Early Access Build#23 ( 2019/11/13 ) 现已上市 。 此版本最值得注意的更改之一是删除了并发标记扫描垃圾收集器 。 JEP 291 [“弃用并发标记扫描(CMS)垃圾收集器”]早在2017年就使用JDK 9和JEP 363 [“删除并…

python 转成摩尔斯电码_一篇文章教会你摩尔斯码

正规的摩尔斯码对照表是这样的其实记住主要的26个字母就够日常用了,而记26个字母有一张更简单的图: 把点和横线以字母的形态呈示出来,基本上看一遍就能记住大半了。不过要注意每个字母下方的一行小字,那是正确的顺序,别…

java addfirst_java – ArrayDeque类的addFirst方法

以下行的功能基本上是(head-1)MODULO(elements.length),因此当head 0时,从head减去1将导致最大可能值而不是-1.head (head - 1) & (elements.length - 1)10是元素的有效长度,根据实现,elements.length总是2的幂.如果不是这种情况,则操作无效.了解其工作原理需要了解位操作…

kali使用笔记本自带无线网卡_无线网卡?那是什么?

用过无线网卡的童鞋都知道无线网卡的方便,而没有用过无线网卡的往往觉得它很陌生,今天就来跟大家讲讲无线网卡的三大用途。NO.1摆脱网线束缚,台式电脑也能连WiFi如今,WiFi上网越来越方便,如果房间里没有预装网口&#…

无效的Java

也许我可以被机器人代替进行代码审查。 有一些反馈我发现自己一遍又一遍。 这是我最不喜欢的一些: 通用代码结构 放弃其他 if return的else就是多余的,并造成不必要的缩进。 if (foo) { return bar; } else { return baz; } // should be replaced b…

java 指定打印机打印_java 指定打印机 进行打印

代码如下:package com.printer;import java.io.*;import java.util.Locale;import javax.print.*;import javax.print.attribute.*;import javax.print.attribute.standard.*;public class PrintTest {public static void main(String args[]) {FileInputStream psS…

everything安装版和便携版有什么区别_国行版爱他美卓萃和普通版有什么区别,一定要选卓萃吗?...

粉丝私信:想给孩子喝国行版爱他美,有普通版和卓萃版,这两个版本有什么区别,卓萃的价格这么高,就一定好吗?奶粉速递:爱他美奶粉在国内算是家喻户晓的品牌了,吃的宝宝也比较多&#xf…

尚学堂java培训_IT培训教育平台课程分享

知乎朋友大家好,有以下【好课推荐】,并且愿意推荐给大家一起学习。更有海量学习资源与你分享,每天更新!让你快速学习成长,无后顾之忧。1~4阶段SketchUp全能室内设计师养成班(完整版)2020版[千锋] jQuery入门教程全集(看…

java usbkey数字证书_Java创建数字证书

BouncyCastle下载:链接:http://pan.baidu.com/s/1vrcL4 密码:6i27package com.what21.security05;import java.io.InputStream;import java.io.OutputStream;import java.math.BigInteger;import java.security.Key;import java.security.…

modbus调试时间超时_Java调试器和超时

modbus调试时间超时在代码中存在超时的情况下如何使用调试器。 我的调试器王国! 因此,您一直忙于编写一个项目,一切顺利,直到出现错误为止。 您可以进入开发人员的工具箱,然后拔出调试器。 很棒–您可以设置断点&…

64位微处理器_MCU芯片市场研究:主导8位MCU,但32位MCU受欧美和日本高度垄断

↑ 点击上方 “ 财经热闻解析 ” 关注我们从古老的用电子管堆出来的成吨的逻辑门到现在的超级数据中心,电子技术的发展走过了一代又一代,自然而然,各种芯片也在百花齐放。到了今天,芯片早已成了一个大家族。这么多芯片&#xff0c…

java web容器原理_javaWeb工作原理

http:无状态协议,客户端和服务器之间不需要建立持久的连接,通信完就断开。http的工作流程:1.客户端和服务器建立连接2.客户端发送请求3.服务器响应内容4.服务器关闭连接,客户端解析服务器发送回来的内容http请求&#…

支持Java 8

尽管Java到目前为止已经发布了版本13,但是有许多生产安装都与Java 8一起运行。作为专家,即使是最近几天,我也多次开发Java 8代码,我必须为这不是Java 6而感到高兴。另一方面,作为开放源代码开发人员,我可以…

mooc作业怎么上传附件_怎么以最低价格入门hifi音响?

方案一:音源 用电脑某宝一个 DIY的DAC 大概200-300元某宝一个迷你的DIY前级功放 大概200-300元某宝一个后级小甲类功放 1969小甲 大概600-1500音箱 5寸或者6寸书架箱 品牌的可以考虑 q牌 2000左右 或者某宝DIY组装的惠威 惠威m1 也是20…

java把一段英文拆成单词_java编程题,输入一段英文文章,单词之间都已经用空格分隔,本人想以每5个单词为一行输出,怎么写?请指教...

我的问题是不会输出5个单词为一行.求指导!!我的代码是以下:importjava.io.*;importjava.util.*;publicclassTest2{publicstaticvoidmain(String[]args)throwsIOException{InputStreamR...我的问题是不会输出5个单词为一行.求指导!! 我的代码是以下:import java.io.* ;import ja…

jsp标签 判断 余数_舟山铝箔纸不干胶标签制作-雷宝实业

卷筒纸不干胶印刷时,纸张的走向与一般印刷方法不同,它是以轴向跳格移动实现套印的,即在印版滚筒上同时装上几套印版,当不干胶在压印平台上每跳移一次,印版滚筒水平方向作往复旋转一次,就可实现印刷一个颜色…

java input是什么意思_java中的【...】表示什么意思

...表示可变长参数,就是说这个位置可以传入任意个该类型参数,简单来说就是个数组。(视频教程推荐:java课程)代码示例:1. testPoints(7);2. testPoints(7,9,11);3. testPoints(new Integer[]{7,9,11});1. public static void testP…