Java中的钩子方法

钩子方法是啥

钩子顾名思义就是用来挂东西的。那么要挂东西必须有个被挂的东西,要不就是铁环、要不就是墙的边沿。所以要能挂住东西必须要有个被勾住的铁环,要一个钩子。那么在java中也是同样的原理,你首先需要一个被挂在的东西,一个挂载的东西。

钩子的实现方法

是对于抽象方法或者接口中定义的方法的一个空实现,在实际中的应用,比如说有一个接口,这个接口里有7个方法,而你只想用其中一个方法,那么这时,你可以写一个抽象类实现这个接口,在这个抽象类里将你要用的那个方法设置为abstract,其它方法进行空实现,然后你再继承这个抽象类,就不需要实现其它不用的方法,这就是钩子方法的作用。

抽象父类


public abstract class AbstractClass {

    public abstract boolean isOpen();

    public final void operating() {
        if(isOpen()) {
            System.out.println("钩子方法开启");
        }else {
            System.out.println("钩子方法关闭");
        }
    }
}

实现类

public class AchieveClass extends AbstractClass {

  //钩子方法能挂在到operating能干预到operating业务逻辑
    @Override
    public boolean isOpen() {
        return true;
    }

    public static void main(String[] args) {
        AchieveClass ac = new AchieveClass();
        ac.operating();
    }

}

只要重写isOpen就能干预父类方法的业务流程。相当于将isOpen挂载在了父类的operating()中。

原文地址:https://www.cnblogs.com/yanlong300/p/8446261.html

时间: 2024-08-30 14:40:41

Java中的钩子方法的相关文章

浅谈Java中的hashCode方法

哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现. 为何Object类需要这样一个方法?它有什么作用呢?今天我们就来具体探讨一下hashCode方法. 一.hashCode方法的作用 对于包含容器类型的程序设计语言来说,基本上都会涉及到has

Java中的main()方法详解

在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这个例子说明Java类中main()方法的奥秘,程序的代码如下: 1 /** 2 * Java中的main()方法

java中构造方法和方法全面解析

java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望大家多多讨论.          构造方法和方法的区别: 构造方法要与类名相同,无返回类型,在类初始化的时候调用.      方法最好与类名不同,对象调用,静态方法可用类名.方法(). 构造器和方法在下面三个方面区别:修饰符,返回值,命名. 1.和方法一样,构造器可以有任何访问的修饰: public

Java中的toString()方法

Java中的toString()方法 目录 1.????对象的toString方法 2.????基本类型的toString方法 3.????数组的toString方法 4.????参考文献 ? ? 对象的toString方法 在JDK API中对Object对象的toString方法说明如下: toString : public String toString() 返回该对象的字符串表示.通常,toString 方法会返回一个"以文本方式表示"此对象的字符串.结果应是一个简明但易于读懂

JAVA中的finalize()方法

[转]JAVA中的finalize()方法 今天早上看Thinking in java的[第四章 初始化和清除].[  清除:终结和垃圾回收]的时候, 看到了这个东西. 用于清理滴... 当然,这个方法来自java.lang.Object finalize()方法的重写 权限(Access)需要是protected或者是public ,不能是private finalize()方法不需要显示地调用, 在垃圾回收(GC)时会被自动先行调用的. 据我测试,需要显示地调用垃圾回收方法(System.g

千万不要误用 java 中的 HashCode 方法

刚才debug追堆栈的时候发现一个很奇怪的问题 我用IE8和Google的浏览器访问同一个地址 Action的 scope="session" 也设置了 而且两个浏览器提交的参数map也是互相独立的 不过很奇怪的一个 两个Action对象的hashmap是不同的但是它们的对象变量 paraterMap 的 哈希值 居然是一个 我大不解!( 找到原因以后发现这个问题其实只是一个好多年没有再提起的基础问题 ) 不过发现确实有朋友在网上说这个问题曾经引发过bug Java中的hashCode

浅谈Java中的hashcode方法 - 海 子

浅谈Java中的hashcode方法 哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现. 为何Object类需要这样一个方法?它有什么作用呢?今天我们就来具体探讨一下hashCode方法. 一.hashCode方法的作用 对于包含容器类型的程

Java中的native方法

博客引用地址:Java中的native方法 今天花了两个小时把一份关于什么是Native Method的英文文章好好了读了一遍,以下是我依据原文的理解. 一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C.这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编

java中的hashCode()方法

电话面试问到了HashMap里的类要实现什么方法,只知道是按哈希值查找所以查找效率很快,其它的一问三不知,现在来研究研究. 想研究研究,但是却不知道从哪里下手.... 汗!!!首先来咬文嚼字吧 什么是哈希值?百度了一下:哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值.哈希值是一段数据唯一且极其紧凑的数值表示形式... 还是看不出和java类有什么关系...以前学数据结构时哈希表(也叫做散列表)这章还是很重要的,关键是那个哈希映射的哈希函数,也就是哈希算法,根